setNeedsDisplay不调用drawRect的问题

发布于 2022-09-01 15:57:49 字数 470 浏览 21 评论 0

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

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

clipboard.png

其次,我重写了drawRect方法:

clipboard.png

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

思念满溢 2022-09-08 15:57:50

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

甩你一脸翔 2022-09-08 15:57:50

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

剪不断理还乱 2022-09-08 15:57:49

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文