Tag: runloop

现在有没有办法使drawRect工作?

原来的问题……………………………………….. 如果您是drawRect的高级用户,您将会知道当然在“所有处理完成”之前,drawRect才会真正运行。 setNeedsDisplay将视图标记为无效的操作系统,并基本上等待,直到所有的处理完成。 这可以在你想要的普通情况下生气: 视图控制器1 启动一些function2 增量式3 创造出越来越复杂的艺术作品 在每一步,你setNeedsDisplay(错!)5 直到所有的工作完成6 当然,当你做上述1-6时,所发生的只是在第6步之后,drawRect 才运行一次 。 您的目标是在第5点刷新视图。该怎么办? 解决原来的问题……………………………………… 。 总而言之,你可以(A)背景大型的绘画,并调用前景的UI更新或(B)争论有争议的有四个“立即”方法build议不要使用后台进程。 对于什么工作的结果,运行演示程序。 它有#定义所有五种方法。 汤姆·斯威夫特(Tom Swift)介绍的真正惊人的替代解决scheme……………… 汤姆·斯威夫特(Tom Swift)解释了简单地操作运行循环的奇妙想法。 以下是您如何触发运行循环: [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]]; 这是一个真正令人惊叹的工程。 当然,在操作运行循环时应​​该非常小心,许多人指出这种方法对于专家来说是严格的。 奇异的问题……………………………………… 。 尽pipe有许多方法可行,但实际上它们并不“起作用”,因为在演示中会看到一个奇怪的渐进式减速神器。 滚动到下面粘贴的“答案”,显示控制台输出 – 你可以看到它是如何逐渐减慢。 这是新的SO问题: 运行循环/ drawRect中的神秘的“渐进式减速”问题 这里是演示应用程序的V2 … http://www.fileswap.com/dl/p8lU3gAi/stepwiseDrawingV2.zip.html 你会看到它testing所有五种方法, #ifdef TOMSWIFTMETHOD [self setNeedsDisplay]; [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]]; #endif #ifdef […]