如何动画navigationItem(闪烁或闪烁)

时间:2012-06-15 13:06:01

标签: objective-c ios uiscrollview core-animation

我有一个scrollView应用。每个scrollView项都有自己的标题(navigationItem标题)。现在,当用户在特定的scrollView项目上执行某些操作(我有一种捕获此事件的方法)时,我想为导航项设置动画。

我想也许可以连续改变它的背景颜色,或者如果可能的话,或者更好地增加/减少它的透明度。

有人做过类似的事吗?这样做的正确方法是什么?我没有脚本要求我需要做什么,只是当前的scrollView项目(视图)与其他项目不同。

感谢您的任何建议

我从收到的回复中得到了它:

CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"opacity"];
    animation.duration=1.5;
    animation.repeatCount=1000000;
    animation.autoreverses=YES;
    animation.fromValue=[NSNumber numberWithFloat:1.0];
    animation.toValue=[NSNumber numberWithFloat:0.3];
    [button addAnimation:animation forKey:@"animateOpacity"];

我希望

引起癫痫发作并不是太快和太强烈

2 个答案:

答案 0 :(得分:1)

UIBarButtonItem(恼人地)不会从UIView继承,所以如果你尝试的话,CoreAnimation会蹲下来。但是,如果您使用UIButtonUIImageView设置作为customView属性来滚动自己的导航项,则完全可以使用UIView的块动画包装器进行动画:

[UIView animateWithDuration:1.0f animations:^{
    [myButton setAlpha:0.0f];
    //the button is now invisible
}];

至于彩色动画,不幸的是,只有CGColors可以动画,然后,只有在非常粗略的情况下。

答案 1 :(得分:0)

您可以执行以下操作,而不是尝试为整个按钮设置动画。 对于像导航项目动画一样的闪烁或闪光,您只需更改其tintColor

即可
  // call timer where you want to start the blinking or flash like animation

 [NSTimer scheduledTimerWithTimeInterval:0.65f target:self selector:@selector(animate) userInfo:nil repeats:YES];


 -(void)animate
  {

   if (flagAnimate == 0) {
   self.navigationItem.leftBarButtonItem.tintColor = [UIColor redColor];
     flagAnimate = 1;
  }
   else if (flagAnimate == 1)
  {
 self.navigationItem.leftBarButtonItem.tintColor = [UIColor grayColor];
     flagAnimate = 0;

  }