iOS UIStepper

时间:2020-02-23 14:45:58  来源:igfitidea点击:

在本教程中,我们将在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也将应用到图像上。