【问题标题】:Show Hide UIView Twice Every 5 Seconds Using NSTimer使用 NSTimer 每 5 秒显示两次隐藏 UIView
【发布时间】:2014-11-23 06:22:50
【问题描述】:

我有一个 UIView 添加到一个视图控制器。我想让它每 5 秒闪烁两次。

以下代码使 UIView 每 1 秒闪烁一次:

-(void) showHideView{
[UIView animateWithDuration:1
                      delay:5
                    options:UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     self.myview.alpha = 0;
                 }
                 completion:^(BOOL finished){
                     [UIView animateWithDuration:1
                                           delay:5
                                         options:UIViewAnimationOptionCurveEaseInOut
                                      animations:^{
                                          self.myview.alpha = 1;
                                      }
                                      completion:nil
                      ];
                 }
 ];
}

如何让 UIView 每 5 秒闪烁两次? (即两次闪烁的脉冲)

【问题讨论】:

    标签: ios objective-c animation ios7 uiview


    【解决方案1】:

    将您的两个延迟都更改为零。

    将两个持续时间设置为 1.25。

    使用计时器每 2.5 秒调用一次方法。

    How do I use NSTimer?

    基于 cmets 编辑:

    改用这个:

    -(void) showHideView {
        if( self.view.alpha == 1.0 ) alpha = 0.0;
        else alpha = 1.0;
    }
    
    - (void)timerCallback {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.25  * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
        [self showHideView];
    });
        // repeat above code for 2.5, 3.75, 5.0
    }
    

    让你的计时器每 5 秒调用一次 timerCallback。

    【讨论】:

    • 这接近于我正在寻找的效果。它每 5 秒缓慢淡出视图。我试图每 5 秒实现两次光点,例如1.2.3.4.5 on-off-on-off 1.2.3.4.5 on-off-on-off 1.2.3.4.5 等
    【解决方案2】:

    既然你已经用 iOS7 标记了这个,我可能会建议关键帧动画:

    [UIView animateKeyframesWithDuration:2.5 delay:0.0 options:UIViewKeyframeAnimationOptionRepeat animations:^{
        [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.25 animations:^{
            self.myview.alpha = 0.0;
        }];
    
        [UIView addKeyframeWithRelativeStartTime:0.5 relativeDuration:0.25 animations:^{
            self.myview.alpha = 1.0;
        }];
    } completion:nil];
    

    根据需要调整总持续时间(循环重复的频率)、相对开始时间(占总持续时间的百分比)和相对持续时间(同样,占总持续时间的百分比)。

    【讨论】:

    • 这也很接近,但它会产生超过 2.5 秒的淡出效果。再次开启 .... 淡出超过 2.5 秒。
    • 不,我认为这将在 0.625 秒内淡出(即 2.5 * 0.25),保持该状态 0.625 秒,淡入 0.625 秒,保持该状态 0.625 秒并重复. (实际上,我认为它正在对其应用一条曲线,但这大致就是正在发生的事情。)如果您希望它更快地从一种状态转换到另一种状态,正如我所说,您可以减少relativeDuration。或者调整你想要的任何这些变量。它只是说明了如何制作重复的动画序列。
    猜你喜欢
    • 2012-08-24
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 2018-06-02
    • 2018-03-29
    相关资源
    最近更新 更多