我有一个UIControl类,需要根据UIImageView位置进行一些计算,这个位置可以通过touchesBegan和touchesMoved(这个类中的所有东西)来移动。 比我想显示它作为我已经编程创建的UILabel。当变量发生变化时更新UILabel文本
class control : UIControl{
...
let leftControl: UIImageView = UIImageView(image: UIImage(named: "left-control"))
...
func leftValue() -> String{
var leftValue : String = "0.0"
leftValue = "\(leftControl.center.x)"
return leftValue
}
}
和我ViewController.swift
类的ViewController:UIViewController的{
let ctrl : Control = Control()
let leftLabel : UILabel = UILabel(frame: CGRect(x: 40, y: 300, width: 150, height: 30))
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
ctrl.frame.origin = CGPoint(x: 40, y: 400)
leftLabel.text = "\(ctrl.leftValue())" //displays only starting value
view.addSubview(slider)
view.addSubview(leftLabel)
view.addSubview(rightLabel)
}
我知道这是在viewDidLoad中里面,所以它不能正常更新。我想知道有关scheduledTimer,但不知道它是否是好的解决方案。
关键值观察 –
@AleksandrMedvedev志愿更是一个Objective-C的功能。不过,在Swift中可能并不简单。 – Losiowaty
@Losiowaty,KVO不是一个简单的功能..永远:) –