我有UIView
这是UIViewController
中的一个插座,在ViewController中我进行网络调用,调度到主队列并将下载的属性传递给视图。在视图中我认为我可以使用计算属性并调用setNeedsDisplay
根据更新的属性重绘视图,但这不会发生?
class MyViewController {
@IBOutlet weak var myView: MyViewType!
func asyncCall() {
DispatchQueue.main.async {
myView.property = result
}
}
}
class MyViewType: UIView {
var property: [propertyType] = [] {
didSet {
setNeedsDisplay()
}
}
override func draw(_ rect: CGRect) {
//Drawing code using property
}
}
答案 0 :(得分:0)
我明白了,setneedsDisplay()
被调用,但我正在对property
进行一些额外的处理,即投射到Int
,但使用的是lazy var
。所以我在var asInt
函数中移动了draw
声明,现在它可以工作了。