【问题标题】:How to Implement Continuous Flashing Colour Animation on a UITableViewCell with Start/Stop Control?如何在带有开始/停止控件的 UITableViewCell 上实现连续闪烁颜色动画?
【发布时间】:2015-11-03 09:48:17
【问题描述】:

在我的 iOS 应用程序中,我使用 UITableView 最大。 8 行(行数可以更改,但最多为 8)。我正在下载一些在表格视图中处理和呈现的数据。

如果某些数据不正确(超出范围或任何情况),我需要通知用户。此警告应为行闪烁。如果位置 2 的某些值不正确,则第 2 行应该闪烁(白色/红色)。

我需要建议如何实现它的最佳方式。

我唯一的想法是实现以 500 毫秒间隔运行的背景计时器,并且每次使用数据检查数组,如果某些数据不正确,它会更改特定行的背景颜色(如果背景颜色为白色,则为变为红色和相反)。这应该看起来像闪烁。

这样可以吗,还是你有更好的主意?谢谢

【问题讨论】:

  • 由于单元格被重复使用并且我假设你有滚动,你不认为不断闪烁这些单元格可能不是最好的主意吗?不过只是我的看法。我宁愿在行上向用户显示一个指示器(可能是一个红十字图像)以显示某些不正确的东西,或者只将它从红色变为白色动画一次/两次。休息一下,我也让专家评论一下:)

标签: objective-c uitableview nstimer flashing


【解决方案1】:

UIView

您可以使用UIViewanimation methods 来处理动画方面的事情...

This question 有几个答案,您应该如何重复动画,并在每个循环之间检查动画是否应该继续或停止。

但是,鉴于您想启动一个连续动画并根据其他事件中断/停止它,我认为使用 CABasicAnimation 可能会更好...

CABasicAnimation

您可以使用CABasicAnimationUITableViewCellbackgroundColor 设置动画。

例如,下面是我用来为UIView 设置颜色的一些代码:

// UIView* _addressTypeTokenView;
// UIColor* _tokenOnColour;
// UIColor* _tokenOffColour;

CABasicAnimation* colourChange = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
colourChange.fromValue = (__bridge id)(_tokenOffColour.CGColor);
colourChange.toValue = (__bridge id)(_tokenOnColour.CGColor);
colourChange.duration = 0.6;
colourChange.delegate = self;
_addressTypeTokenView.layer.backgroundColor = _tokenOnColour.CGColor;
[_addressTypeTokenView.layer addAnimation:colourChange forKey:@"colourChangeAnimation"];

你会想要创建一个永远重复的动画。 (根据a related question on this topic)使用HUGE_VALF 来创建这样的动画是合法的。例如

colourChange.repeatDuration = HUGE_VALF;

创建CABasicAnimation 后,将其添加到相关视图的CALayer 中,并添加一个键:

- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key

在上面的示例中,我使用了密钥@"colourChangeAnimation"

[_addressTypeTokenView.layer addAnimation:colourChange forKey:@"colourChangeAnimation"];

该密钥可以稍后用于remove the animation,使用此方法:

- (void)removeAnimationForKey:(NSString *)key

您仍然需要定期检查数据是否仍然有效。如果生效,可以去掉动画,停止闪烁效果。

您可以使用计时器在视图控制器中进行 checking,或者让 model 对象处理数据有效性检查并使用委托回调与视图控制器(分离职责并保持视图控制器整洁)。

无论您如何处理数据有效性检查,CABasicAnimation 方法都提供了一种干净的方式来启动和停止动画。

【讨论】:

    猜你喜欢
    • 2014-10-20
    • 2015-06-22
    • 2021-10-11
    • 2018-12-21
    • 2018-07-30
    • 2013-04-17
    • 1970-01-01
    • 2017-10-21
    • 2011-01-17
    相关资源
    最近更新 更多