hzx*_*zxu 15 objective-c uiview uiviewanimation ios
我需要处理一个案例,你可以做一些有或没有动画的事情,而不是:
if (animation)
{
[UIView animateWithBlock:^(){...}];
}
else
{
...
}
Run Code Online (Sandbox Code Playgroud)
我想要做:
[UIView animateWithBlock:^(){...} duration:(animation ? duration : 0)]
Run Code Online (Sandbox Code Playgroud)
但不确定它是否有效,即使它确实如此,是否有使用它的开销而不是直接更改视图?
谢谢
Dan*_*cía 28
在这种情况下我做的是创建一个包含我想要制作的所有动画的块.然后执行一个UIView动画,将动画块作为参数传递,或直接调用该块,无论我是否想要动画.像这样的东西:
void (^animationBlock)();
animationBlock=^{
// Your animation code goes here
};
if (animated) {
[UIView animateWithDuration:0.3 animations:animationBlock completion:^(BOOL finished) {
}];
}else{
animationBlock();
}
Run Code Online (Sandbox Code Playgroud)
这样可以避免开销
che*_*bur 19
根据Apple文档:
如果动画的持续时间为0,则在下一个运行循环周期开始时执行该块.
是的,由于持续时间为零,过渡将有效地瞬间完成.