使用NSTimer每5秒显示隐藏UIView两次

时间:2014-09-28 21:57:36

标签: ios objective-c animation ios7 uiview

我在视图控制器中添加了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秒闪烁两次? (即两次闪烁的脉冲)

2 个答案:

答案 0 :(得分: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];

根据您的需要调整总持续时间(周期重复的频率),相对开始时间(总持续时间的百分比)和相对持续时间(再次,总持续时间的百分比)。

答案 1 :(得分:1)

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

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

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

How do I use NSTimer?

根据评论进行编辑:

请改用:

-(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。