the*_*nke 20 uiviewanimation ios
我目前关注以下问题:
我开始动画,其中触发了2个对象属性.
代码是:
[UIView animateWithDuration:0.3 animations:^{
greyscaleImage.alpha = 1;
activityIndicator.alpha = 1;
} completion:^(BOOL f){
if(f)
{
[activityIndicator startAnimating];
}
}];
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
我发现的唯一问题是,当持有此activityIndicator和greyscaleImage的视图被释放时,我有0.3秒的更改来崩溃应用程序.
为了更清楚,请想象一下ViewController,它的视图通过默认的iOS模式-View方式呈现.现在触发该动画,需要2分钟.在达到2分钟之前,你会发现动画很无聊,你想要忽略那个视图.现在,发布了view,activityIndicator和greyscaleImage,动画o/c无法知道该怎么做.
所以我想知道,这里做什么+为什么调试器指向
} completion:^(BOOL f){
Run Code Online (Sandbox Code Playgroud)
而不是例如[activityIndicator ...
有没有办法,允许用户在2分钟结束前解除视图?
最好的祝福
Abe*_*ant 32
如果你开始一个需要0.0秒并进入你想去的状态的新动画,它将取消旧动画并开始新的(即时)'动画'.
要通过转到已经位于的位置来停止移动视图的示例:
[UIView animateWithDuration:0.0
delay:0.0
options:UIViewAnimationOptionBeginFromCurrentState
animations:^{movingView.frame = ((CALayer *)movingView.layer.presentationLayer).frame;}
completion:^(BOOL finished){}
];
Run Code Online (Sandbox Code Playgroud)
选项:UIViewAnimationOptionBeginFromCurrentState很重要.不调用它会让动画从上一个动画的结束状态开始.在运动中,它会在翘曲到你希望它停在的地方之前变形到最终位置.即使你的取消 - '动画'是即时的,也可以看到来回跳跃.
注意:动画时间不必为0.0秒,任何动画都将取消旧动画.但不完全确定不同类型的动画.例如,我不知道更换框架是否会阻止淡入淡出.
您可以从视图图层中删除所有动画
[movingView.layer removeAllAnimations];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16889 次 |
| 最近记录: |