gpt4 book ai didi

ios - 当 iOS 7 中显示工作表/警报时,如何在自定义绘制的控件上将 tintColor 设置为灰色动画?

转载 作者:IT王子 更新时间:2023-10-29 07:44:13 26 4
gpt4 key购买 nike

在 iOS 7 中,当出现 UIActionSheet 时,系统控件会将所有的 tintColor 设置为灰色。当工作表被关闭时,它们会动画回来。

我有一些带有自定义背景图像的控件或使用色调颜色的 drawRect 实现,我希望它们像系统控件一样为这种变化设置动画。

Apple 将 - (void)tintColorDidChange 添加到 UIView,但在此方法中使用新颜色重绘不会使更改具有动画效果——它只是从全色切换到立即全灰,当它周围的其他系统控件正在动画时看起来很糟糕。

如何让我的自定义绘制控件像 Apple 一样为 tintColor 转换设置动画?

最佳答案

您可以通过将 Core Animation 过渡应用于 View 层来做到这一点:

//set up transition
CATransition *transition = [CATransition animation];
transition.type = kCATransitionFade;
transition.duration = 0.4;
[self.layer addAnimation:transition forKey:nil];

//now trigger a redraw of the background using the new colour
//and the transition will cover the redraw with a crossfade
self.flagToIndicateColorShouldChange = YES;
[self setNeedsDisplay];

编辑:动画和重绘之间可能存在竞争条件,具体取决于您进行重绘的方式。如果您可以发布您尝试立即更新的原始重绘代码(没有动画),我可以提供更具体的答案。

关于ios - 当 iOS 7 中显示工作表/警报时,如何在自定义绘制的控件上将 tintColor 设置为灰色动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19798712/

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