gpt4 book ai didi

iOS:动画在 observeValueForKeyPath 中不起作用

转载 作者:行者123 更新时间:2023-11-29 01:22:12 25 4
gpt4 key购买 nike

我使用 KVO observe changes in a frame并相应地设置另一个框架

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
if ([keyPath isEqualToString:KeyPathForFrameBeingObserved]) {
[UIView animateWithDuration:1 animations:^{
CGRect frame = [self playWithFrame:viewBeingMonitored.frame];
self.viewToAnimate.frame = frame;
}];
}
}

动画 block 中的代码已执行,但动画不起作用,我怀疑重复调用动画方法可能会导致此问题,但使用日志消息我发现动画即使对于单次调用也不起作用,有人能解释一下吗?

iPad 2/(iOS8.4)

  • 我尝试在 dispatch_async(dispatch_get_main_queue(), ^{ ... }); 中包含动画方法调用,但动画仍然无法正常工作。
  • 我尝试过将观察到的更改推送到队列中,并使用dispatch_after将动画方法延迟一秒钟,以便仅使用队列中的最后一个元素来运行它,以避免重复调用,但没有成功。
  • KVO 工作正常(添加观察者已经处理),但动画 block 中的代码执行时没有动画。

最佳答案

您似乎在尝试观察 UIKit 对象的属性。请记住:

... the classes of the UIKit framework generally do not support KVO ...

来源:https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/KVO.html

因此,您必须检查您的 observeValueForKeyPath:ofObject:change:context: 是否确实在调用。

关于iOS:动画在 observeValueForKeyPath 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34470242/

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