- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 UIViewAnimationOptionBeginFromCurrentState 实现多阶段动画,以允许用户随意取消动画。动画是在两种尺寸之间连续且循环地动画的 View 。当用户触摸 View 取消动画时,我希望 View 快速恢复到其原始的小尺寸,无论当时是增大还是缩小。
我通过两个单独的动画来实现多阶段方面,一个用于增大 View ,一个用于缩小 View 。每个例程都在其完成 block 中调用另一个例程,从而永远循环,除非已设置中止标志。
如果在增长 View 动画期间调用中止,我会得到预期的行为:动画快速并立即将 View 返回到其原始的小尺寸并停止。好!
但是,如果在收缩 View 动画周期期间调用 abort,则 View 会继续以相同的速度收缩(然后按预期停止),就好像从未调用过 UIViewAnimationOptionBeginFromCurrentState 选项一样。
代码有望使这一点更加清晰,并希望有人能够看到我看不到的东西。
- (void)stopAnimating {
abort = YES;
[UIView animateWithDuration:.2 // some small interval
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:^{ self.frame = minRect;}
completion:^(BOOL done){}
];
}
- (void)animateSmall {
[UIView animateWithDuration:4
delay:0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{self.frame = minRect;}
completion:^(BOOL done){if (!abort)[self animateBig];}
];
}
- (void)animateBig {
[UIView animateWithDuration:4
delay:0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{self.frame = maxRect;}
completion:^(BOOL done){if (!abort)[self animateSmall];}
];
}
最佳答案
这里只是一个猜测,因为你的代码看起来和我所做的完全一样。但我认为发生的情况是中止动画将相同的属性设置为与其中断的动画相同的值,并且这被视为等效且不需要更改(即使持续时间发生变化)。
对该理论的测试 - 以及问题的解决 - 是使振荡 minRect 的大小与稳定状态 minRect 的大小略有不同。
希望这能起作用。祝你好运。
关于ios - UIViewAnimationOptionBeginFromCurrentState 的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9797594/
我正在尝试使用 UIViewAnimationOptionBeginFromCurrentState 实现多阶段动画,以允许用户随意取消动画。动画是在两种尺寸之间连续且循环地动画的 View 。当用户
我正在尝试在收到按钮点击时执行这个基本的 UIView 动画: - (IBAction)buttonPress:(id)sender { self.sampleView.alpha = 0.0
我遇到了一个奇怪的bug(或者我真的很笨……):我想在 MKAnnotationView 中显示自定义标注。我正在做的是添加一个自定义 View 作为 MKAnnotationView 的 subvi
我想将 UIView (self.square) 的缩放属性设置为 10% 的动画: - (void)viewDidAppear:(BOOL)animated { [super viewDid
我是一名优秀的程序员,十分优秀!