当重新渲染UIView的布局时,不会触发绘制功能

时间:2016-11-10 19:47:57

标签: ios uiview ios10

我正在使用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(...)函数永远不会被调用。为什么呢?

1 个答案:

答案 0 :(得分:2)

要触发视图重新绘制,请拨打setNeedsDisplay(),而不是setNeedsLayout()