我正在使用Xcode 8.1
我是UIView的子类:
class DrawingView: UIView {
override func draw(_ rect: CGRect) {
super.draw(rect)
print("drawing...")
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
// re-renader the layout when finger moves
setNeedsLayout()
super.touchesMoved(touches, with: event)
}
}
当我运行我的应用时,上面的draw(...)
功能会在应用启动时被称为一次。 (我看到了打印信息)
然后,我手指在屏幕上移动,我预计每次手指移动都会调用draw(...)
(因为我打电话给setNeedsLayout()
),
但draw(...)
函数永远不会被调用。为什么呢?
答案 0 :(得分:2)
要触发视图重新绘制,请拨打setNeedsDisplay()
,而不是setNeedsLayout()