如何延迟翻转包含具有渐变背景的更新 UIButton 的 UIView

发布于 2024-11-28 07:45:43 字数 272 浏览 0 评论 0 原文

我有两个视图,它们根据视图中的按钮按下进行翻转。该视图有两个 CAGradientLayers 作为子图层。如果我在操作方法触发后立即翻转,则按钮正在更改渐变的不透明度,因此您会看到卡顿(UIVIew 翻转动画必须适应本身正在变化的按钮。)

我可以破解一个解决方案通过执行performWithSelection:withObject:afterDelay:0.1f,但感觉就像是一个黑客。我尝试设置图层的 needDisplay 属性并测试它何时被清除,但这可能不足以告诉我屏幕本身已重绘。

达夫

I have two views that flip based on a button press within the view. The view has two CAGradientLayers as sublayers. If I flip immediately after the action method fires, the button is in the process of changing the opacity of the gradients and so you see stuttering (the UIVIew flip animation is having to accommodate the button that is itself changing.)

I can hack a solution by doing a performWithSelection:withObject:afterDelay:0.1f, but it feels like such a hack. I tried setting the layer's needsDisplay property and testing for when it was clears, but probably this is insufficient to tell me the screen itself has redrawn.

Dav

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

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

发布评论

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

评论(1

鸵鸟症 2024-12-05 07:45:43

最终这个问题没有解决。我后来发现,在对视图进行动画处理时,如果您还尝试对超级视图进行动画处理,则会产生严重的性能影响。您可以在许多 iOS 应用程序中看到这一点,其中应用程序会在滚动列表中对图像进行动画处理 - 滚动会出现问题。

所以我学到的要么是动画化的东西,要么是它的视图,但不是两者兼而有之!

In the end this has no solution. I have since found that when animating a view there are severe performance implication if you also try to animate the super views. You can see this in many iOS apps where the app animates an image in a scrolling list - the scrolling stumbles.

So what I learned is either animate something, or it's view, but not both!

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