首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for循环内动画的Objective-C完成块(暂停循环处理)

for循环内动画的Objective-C完成块(暂停循环处理)
EN

Stack Overflow用户
提问于 2016-01-25 00:59:45
回答 1查看 205关注 0票数 0

我有一个方法可以淡入,然后淡出按钮标签(如下所示):

代码语言:javascript
复制
    -(void)fade:(NSString *)text
 {

     NSLog(@"Starting Fade In for symbol %@",text);
     [self.symbolButton setAlpha:0.0f];
     [self.symbolButton setTitle:text forState:UIControlStateNormal];
     [UIView animateWithDuration:2 animations:^{
         [self.symbolButton setAlpha:1.0f];

     } completion:^(BOOL finished) {

     NSLog(@"Starting Fade Out for symbol %@",text);
    [UIView animateWithDuration:2 animations:^{
    [self.symbolButton setAlpha:0.0f];
    } completion:nil];
    }];
 }

这可以达到预期的效果。但是,我希望循环遍历数组的内容,而不是单个字符串(例如,淡入"A“、淡出"A”、淡入"B“、淡出”B“……)。

在上面的代码中,完成块等待淡入完成,然后再开始淡出(好)。但是,如果我尝试使用for循环处理一个数组(修改该方法以接受数组并在迭代该数组的for循环中嵌套操作),该循环将立即循环,而不是等待第一个字符完成。

有没有一种方法可以在第二个动画动作中使用完成块来暂停循环的处理-或者我做错了吗?

EN

回答 1

Stack Overflow用户

发布于 2016-01-25 02:55:59

你可以试试这个。我没有测试它,但是这个想法应该行得通

代码语言:javascript
复制
NSArray<UIButton*>* arrButtons;
NSString* text;

for (int i = 0 ; i < arrButtons.count; i++) {
    UIButton* b = arrButtons[i];
    b.alpha = 0.0f;
    [b setTitle:text forState:UIControlStateNormal];

    [UIView animateKeyframesWithDuration:2 delay:4*i options:0 animations:^{

        b.alpha = 1.0f;

    } completion:^(BOOL finished) {

        NSLog(@"Starting Fade Out for symbol %@",text);

        [UIView animateWithDuration:2 animations:^{
            b.alpha = 0.0f;
        } completion:nil];

    }];

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34978661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档