如何最好地为UITableViewCell或UIButton制作动画,以红色方式点亮

时间:2011-11-22 16:03:30

标签: iphone ios animation uitableview uibutton

我想要一个UITableViewCell( - 背景)很快点亮为红色并再次返回旧的外观。这是在NSTimer的生命期间完成的,它给出了调用动画的持续冲动。

现在我正在使用UIView的animateWithDuration:delay:options:animations:completion:方法首先将单元格背景颜色更改为红色,然后在完成部分中将其再次变为灰色(单元格的背景为灰色)。但是这个解决方案由于某种原因不能顺利运行。

问题:想到核心动画,我怎样才能最好地为(a)UITableVeiwCell和(b)UIButton做这种动画?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

animateWithDuration是核心动画的UIView包装器,但你可以尝试将它做得更低一些,看看是否有变化。 要在CALayer上执行显式CA事务,请执行以下操作:

[CATransaction begin];
[CATransaction setAnimationDuration:0.5];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
[CATransaction setCompletionBlock:^{ //Your completion block }];

view.layer.backgroundColor = [UIColor whiteColor].CGColor;

[CATransaction commit];

视图是有问题的控件。对于只是按钮本身的UIButton,对于UITableViewCell,它将取决于表是否已分组或是否使用自定义UITableViewCell。分组的表格单元格添加了backgroundview属性。

答案 1 :(得分:0)

我正在使用NSTimer一遍又一遍地触发动画。不知何故,它给出了上述副作用。现在我正在使用自iOS4以来可用的块动画,它运行得更顺畅。您必须组合(UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse)选项才能重复动画:

[UIView animateWithDuration:kDurationOfCellAnimation delay:0 options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse
                 animations:^{
                     //this will be animated in and out
                     cell.backgroundColor = CELL_RECORDING_COLOR;

                 }
                 completion:^(BOOL finished){

                     cell.backgroundColor = TABLEVIEW_BACKGROUND_COLOR;

                 }];

我遇到的唯一副作用是当单元格离开屏幕时动画停止,而NSTimer则不然。