gpt4 book ai didi

iphone - 当 UIScrollView 滚动时,我的自定义 UI 元素不会更新

转载 作者:行者123 更新时间:2023-12-03 18:20:06 24 4
gpt4 key购买 nike

我有一个旋转的圆形 UI 元素,由 NSTimer 更新。我还有一个 UIScrollView ,它会在滚动时“阻止”旋转的圆圈。这是预料之中的,因为计时器和 ScrollView 都在同一个线程中。

所以我把计时器放在一个单独的线程中,它基本上工作得很好!我可以看到它正在工作,因为 NSLogs 即使在滚动时也会不断出现。

但我的问题是我的旋转圈仍然停止滚动!我怀疑重绘会停止,直到主线程运行循环的下一次迭代(?)。所以即使它的角度一直改变,它也可能不会被重新绘制......

有什么想法我可以做什么吗?谢谢!

最佳答案

滚动时,主线程的运行循环位于 UITrackingRunLoopMode 。因此,您需要做的是将计时器安排在该模式下(可能除了默认模式之外)。我相信 NSRunLoopCommonModes 包括默认模式和事件跟踪模式,因此您可以这样做:

NSTimer *timer = [NSTimer timerWithTimeInterval:0.42 target:foo selector:@selector(doSomething) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

顺便说一下,你应该在主线程上完成这一切。无需生成后台线程(除非每个计时器调用都将进行一些冗长的处理)。

关于iphone - 当 UIScrollView 滚动时,我的自定义 UI 元素不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4109898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com