观察此代码:
- (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;
两次?
这行代码目前是微不足道的,但可能会出现更复杂的情况,其中发生了多种事情。
答案 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];
我不确定它是否会在任何一种情况下运行完成块。