动画与不动画时如何不重复此代码?

时间:2011-10-05 01:15:36

标签: iphone objective-c ios ipad

观察此代码:

- (void)hideRectangleWithAnimation:(BOOL)animate completion:(void (^)(void))completionBlock
{
    if (animate)
    {
        // Hide rectangle
        [UIView animateWithDuration:0.3 animations:^{ rect.alpha = 0; } completion:^(BOOL finished){
            completionBlock();
        }
    }
    else
    {
        rect.alpha = 0;
    }
}

有没有办法不重复属性更改:rect.alpha = 0;两次?

这行代码目前是微不足道的,但可能会出现更复杂的情况,其中发生了多种事情。

2 个答案:

答案 0 :(得分:1)

我想我刚刚找到了答案。我可以将rect.alpha = 0;放在一个块变量中,然后使用它。

void (^animationBlock)(void) = ^{
    rect.alpha = 0;
};

if (animate)
{
    [UIView animateWithDuration:0.3 animations:animationBlock completion:^(BOOL finished){
        completionBlock();
    }];
}
else
{
    animationBlock();
}

答案 1 :(得分:0)

我相信这会有用

[UIView setAnimationsEnabled:animate];
[UIView animationWithDuration:...];
[UIView setAnimationsEnabled:YES];

我不确定它是否会在任何一种情况下运行完成块。