【问题标题】:How to implement blink animation in iOS? [closed]如何在 iOS 中实现闪烁动画? [关闭]
【发布时间】:2013-03-18 14:58:37
【问题描述】:

我在 iPhone application 中发现了有趣的动画效果。当用户激活应用程序或触摸今天按钮时,当前日期的单元格闪烁/闪烁。

如何实现同样的效果?是否可以在没有图像资源的情况下实现它(例如只使用CoreGraphics)?

谢谢

【问题讨论】:

  • 你的问题太模糊了。您需要描述要创建的闪烁效果。人们不太可能熟悉您所指的应用程序,并且可能不想花时间下载它。我很好奇,就这么做了。如果您更新您的问题以便重新打开它,我有一些建议给您,或者阅读 codedad 的答案。他和我的想法是一样的。

标签: ios animation core-animation core-graphics


【解决方案1】:

使用UIAnimation 并为标签的 alpha 属性设置动画。

【讨论】:

  • 好的,我将使用 UIAnimation 移动标签。但是怎么画眨眼呢?
  • @Marta 您需要自己完成一些工作。我概述了如何做到这一点。
  • 您应该提供问题的答案,而不仅仅是提示
【解决方案2】:

使用定时器实现连续闪烁效果

  mytimer = [NSTimer scheduledTimerWithTimeInterval:0.06f
                                             target:self
                                           selector:
             @selector(willStartBlinkingAnimation)
                                           userInfo:nil
                                            repeats:YES];

编写一个函数来显示/隐藏您的日期标签。或者你可以在这里设置 alpha,偶数时间设置为 0.5f,奇数时间设置为 1.0f。

- (void) willStartBlinkingAnimation {

  [UIView animateWithDuration:1.f
                   animations:^{

                     [currentDateLabel setHidden:![currentDateLabel isHidden]];
  }];
}

当你想停止这个过程时,或者在你的 viewDidUnload 方法中,停止这个过程并释放你的计时器:

[mytimer invalidate];
mytimer = nil;

希望这将帮助您满足您的要求。

【讨论】:

  • 只是来回动画不透明度不是太复杂了吗?
  • 这就是为什么我建议将隐藏属性作为第一选择
【解决方案3】:

我假设您的意思是整个日历日“闪耀”的效果(按今天)。

1) 创建渐变。

选项 A: 要达到这种效果,您应该创建一个具有适当高度的表格行的透明 png。示例 img 如下所示(仅供说明,请创建一个):

选项 B:使用 CAGradientLayer 创建渐变。您仍然必须使用 UIImageView 来有效地为单元格行上的渐变设置动画。在您不想以编程方式操作渐变视觉效果之前,我会推荐选项 A。

2) 将图像放在行上。

选项 A:如果您确定此动画始终发生在顶行,那么您可以将渐变图像简单地添加到表格上方。

选项 B:(上述应用程序可能使用的)您必须将渐变图像放置在单元格内。也许最好的选择是使用自定义单元格(正如提到的应用程序使用的那样,请在框中查看左侧的日期),将渐变图像放置在单元格的左侧(放置 X coord = -gradient_img.width)。

3) 动画渐变。

在该动作上启动您想要链接的动画序列。例如。我认为应用程序使用 table view 的 scrollViewDidEndScrollingAnimation 委托方法来触发动画。

[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveLinear 
                 animations:^{                       
                     viewShiningImage.frame = CGRectMake(320, 0, viewShiningImage.frame.size.width, viewShiningImage.frame.size.height);
                 } 
                 completion:^(BOOL finished) {
                     viewShiningImage.frame = CGRectMake(-viewShiningImage.frame.size.width, 0, viewShiningImage.frame.size.width, viewShiningImage.frame.size.height);
                 }
 ];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2011-12-02
    • 2012-03-12
    • 2011-03-30
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多