setNeedsDisplay不调用drawRect的问题

我自建了一个View,然后希望手动调用drawRect方法,所以在需要调用该方法的地方加了setNeedsDisplay方法,但是他并没有调用drawRect方法,求大神答疑!

首先,我在这个接受的通知中调用了setNeedsDisplay方法:

clipboard.png

其次,我重写了drawRect方法:

clipboard.png

问题在于,我通知接受到了,也执行到setNeedsDisplay这一步了,但是却没有调用drawRect。请大神答疑啊!

阅读 11.9k
3 个回答

需要确认下通知是否是在主线程里面收到的。如果这里的通知不是在主线程里面收到的,那么更新界面的操作可能无效或有延迟。记住:更新界面的操作要放到主线程里面

另外,感觉你这里drawRect:方法可能有点使用不当。当你的子类需要自己使用Core Graphics或者Quartz来绘制内容时才需要考虑重载drawRect:方法。如果你的子类只是用subView或subLayer等方式来显示内容的情况下,就没有必要重载drawRect:方法了。

想要立即执行绘制操作应该调用 displayIfNeeded

新手上路,请多包涵

还有种可能是View的frame设置不当,drawRect就无法调用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题