• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 我可以使用 setAnimationRepeatCount : within a UIView animation block?

[复制链接]
菜鸟教程小白 发表于 2022-12-11 20:47:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想使用 UIAnimation 的 block 样式方法使按钮闪烁,特别是:

animateWithDuration:delayptions:animations:completion

我认为我需要设置的一件事是“AnimationRepeatCount”属性 - 可以像这样在动画 block 代码中设置吗?

- (void)animateItemWithBlinkingBOOL)blinking {

    __block BOOL isInBlinkState = blinking;

    if (!isBlinking)
    {       
        // Start blinking                
        [UIView animateWithDuration:0.50f 
            delay:0 
            options:UIViewAnimationCurveLinear
            animations:^{
                // Can I call the AnimationRepeat setter here or 
                // should it be elsewhere outside this block?
                [UIView setAnimationRepeatCount:1000];
                [UIView setAnimationRepeatAutoreverses:YES];

                [button setAlpha:0.0f];        
            } completion:^(BOOL finished) {
                // eventually, this is a value that I want the method to return
                isInBlinkState = !isInBlinkState;        
        }];         
    }
    else
    {
        // Stop blinking
        [UIView animateWithDuration:0.30f 
            delay:0 
            options:UIViewAnimationOptionAllowUserInteraction
            animations:^{
                // Stop blinking - reset everything
                [UIView setAnimationBeginsFromCurrentState:YES];
                [UIView setAnimationRepeatCount:1];

                [button setAlpha:1.0f];        
        } completion:^(BOOL finished) {
            // eventually, this is a value that I want the method to return
            isInBlinkState = !isInBlinkState;        
        }];
    }
}

在基于 block 的调用之前,我原来的方法是这样的:

- (void)animateItemWithBlinkingBOOL) blinking {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.50f];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];

    if( !blinking ) {       
        // Start it
        [UIView setAnimationRepeatCount:1000];
        [UIView setAnimationRepeatAutoreverses:YES];

        [button setAlpha:0.0f];                
    } else {
        // Stop it
        [UIView setAnimationBeginsFromCurrentState:YES];
        [UIView setAnimationRepeatCount:1];

        [button setAlpha:1.0f];        
    }
    blinking = !blinking;
    [UIView commitAnimations];
}



Best Answer-推荐答案


是的,您可以将它设置在 block 内,它会按照您的预期进行。

关于ios - 我可以使用 setAnimationRepeatCount : within a UIView animation block?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8595907/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap