gpt4 book ai didi

iOS:KVO + 动画 = 没有动画?

转载 作者:行者123 更新时间:2023-11-29 13:27:44 24 4
gpt4 key购买 nike

我在这样的 block 中为 View 设置动画(将其框架移到屏幕外):

[UIView animateWithDuration:0.3 animations:^{
view.frame = CGRectOffset(view.frame, .0f, CGRectGetHeight(view.frame));
} completion:^(BOOL finished) {
// view is removed here
}];

当按下按钮触发时,此动画效果非常流畅。之后, View 被移除并释放。

现在,如果我将其放入 KVO 观察器(由 UIGestureRecognizer 触发的值更改):

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
// perform animation from above
}

然后 View 在 0.3 秒后简单地删除,但不会向下动画。我确信这一切都在主线程上运行。

为什么不播放动画有什么想法吗?

解决方案:

执行动画的方法被多次调用,使 View 快速向下动画,以至于它看起来好像立即消失了。显然,这绝不能发生。

最佳答案

UIGestureRecognizer 的目标 Action 机制与 UIControl (UIButton) 之间存在细微差别:UIControl 在检测到触摸事件时立即提供操作,而 UIGestureRecognizer 通过运行循环为下一次传递安排操作。

虽然这不能解释丢失的动画,但它可能仍然有助于理解发生了什么。通常,当手势识别器的 Action 触发时,UIView 动画会起作用。

关于iOS:KVO + 动画 = 没有动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12687062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com