iOS UIStepper
在本教程中,我们将在iOS应用程序中讨论和实现UIStepper控件。
UIStepper
UIStepper是一个基本的UI控件元素,用于增加/减少值。
此UI元素通常在购物车应用程序中用于增加或者减少数量。
UIStepper由以下重要属性组成。
最小值/最大值– UIStepper的上限和下限。
stepValue –增量/减量值。
默认情况下,该值为1。
stepValue属性为Double。自动重复–如果为true,则按住该按钮将保持递增/递减值。
否则,按只会增加/减少一次。
默认情况下为true。连续–如果为true,则一旦触摸该按钮,该值将立即更改。
默认情况下为true。wrap –如果为true,则UIStepper以周期为单位递增/递减。
这意味着一旦达到最小值,便会从最大值开始进一步减小,反之亦然。
如果为false,一旦UIStepper达到最小值/最大值,您将无法再单击它。
这些按钮也被禁用。
一些更重要的属性和功能
" tintColor" –用于设置UIStepper的关键元素的颜色。
setIncrementImage(image :, for :) –为分配的状态设置增量按钮的图像。
一个UIImage实例被传递。
状态可以是正常,集中,突出显示。setDecrementImage(image :, for :) –为减量按钮设置相同的值。
setDividerImage()–用于设置分隔线图像。
无论图像颜色如何,UIStepper中显示的图像都将具有默认为浅蓝色的色调颜色。
图片大小必须小于25X25,才能很好地放入UIStepper中。
我们将在接下来实现的XCode项目中查看点击侦听器功能。
实作
创建一个新的XCode项目。
在Main.storyboard中,将UIStepper和Label拖到ViewController上,如下所示:
- 将UIStepper上的约束设置为在父级中水平和垂直居中。
将Label设置为水平居中,并从UIStepper向其添加垂直间距。
将这些插座链接到ViewController.swift - 在右窗格中,可以更改属性。
或者可以通过编程来完成。
下面给出了ViewController.swift代码:
import UIKit class ViewController: UIViewController { @IBOutlet weak var label: UILabel! @IBOutlet weak var myStepper: UIStepper! override func viewDidLoad() { super.viewDidLoad() myStepper.addTarget(self, action: #selector(ViewController.stepperValueChanged(_:)), for: .valueChanged) } @objc func stepperValueChanged(_ sender:UIStepper!) { label.text = String(sender.value) } }
通过使用addTarget方法,我们通过将事件设置为valueChanged来设置UIStepper的值更改时要调用的函数。
在stepperValueChanged
函数中,我们使用sender.value
获取当前的步进值,并将其设置在Label上。
" sender.value"的类型为Double,因此我们已将其转换为String。
当应用程序在模拟器上运行时,输出为:
该值以Decimal(Double)显示。
当按下UIStepper按钮时,它会不断增加并超过最大值20。
自动重复并包装。
没有连续。
myStepper.isContinuous = false
无自动重复,无环绕,无连续
myStepper.isContinuous = false myStepper.autorepeat = false myStepper.wraps = false
如您所见,+按钮已禁用。
添加色调颜色和阶跃值
为了显示Integer值,我们需要先将double转换为Int,然后转换为String。
label.text = String(sender.value)
要添加色调颜色和阶跃值,请在viewDidLoad方法内设置以下内容。
myStepper.tintColor = UIColor.brown myStepper.stepValue = 2.0
实际应用程序的输出为:
让我们创建另一个UIStepper,其中设置自定义图像。
以编程方式创建UIStepper
在下面的ViewController.swift中,我们更新了viewDidLoad方法,以添加一个自定义UIStepper,该自定义UIStepper的图像资源设置在左侧,右侧和分隔线元素上。
您可以在本教程结尾处随附的项目源代码中找到图像。
我们还以编程方式添加了AutoLayout约束:
import UIKit class ViewController: UIViewController { @IBOutlet weak var label: UILabel! @IBOutlet weak var myStepper: UIStepper! override func viewDidLoad() { super.viewDidLoad() myStepper.tintColor = UIColor.brown myStepper.stepValue = 2.0 myStepper.addTarget(self, action: #selector(ViewController.stepperValueChanged(_:)), for: .valueChanged) let customStepper = UIStepper() customStepper.minimumValue = 10 customStepper.maximumValue = 100 customStepper.tintColor = UIColor.red customStepper.setIncrementImage(UIImage(named: "happy.png"), for: .normal) customStepper.setDecrementImage(UIImage(named: "sad.png"), for: .normal) customStepper.setDividerImage(UIImage(named: "divider.png"), forLeftSegmentState: .normal, rightSegmentState: .normal) customStepper.translatesAutoresizingMaskIntoConstraints = false customStepper.addTarget(self, action: #selector(ViewController.stepperValueChanged(_:)), for: .valueChanged) self.view.addSubview(customStepper) [ customStepper.centerXAnchor.constraint(equalTo: self.view.centerXAnchor), customStepper.topAnchor.constraint(equalTo: myStepper.bottomAnchor, constant: 20) ].forEach{{代码}.isActive = true} } @objc func stepperValueChanged(_ sender:UIStepper!) { label.text = String(Int(sender.value)) } }
实际应用程序的输出如下:
如您所见,tintColor也将应用到图像上。