gpt4 book ai didi

ios - UIView KVO : Why don't changes to "center" cause KVO notifications for "frame"?

转载 作者:可可西里 更新时间:2023-11-01 06:19:25 26 4
gpt4 key购买 nike

我正在努力加深对这些机制的理解。我有一个启用触摸的 UIView,可以更新它自己的 center 属性。

我的理解是frame属性是centerbounds的合成函数。假设这是真的,我将一个观察者放在我的可触摸/可移动 View 上,观察它的 frame 属性。但是该观察者永远不会收到有关框架更改的通知(当 center 更改时会自动发生)。如果我直接观察 center,它会按预期工作。

为什么观察 frame 在这里不起作用?


请注意,我知道我可以直接观察 center,这很好。我还可以使用 frame 的 will/did 方法围绕中心变化,这样也可以工作:

[self willChangeValueForKey:@"frame"];
[self setCenter:center];
[self didChangeValueForKey:@"frame"];

但我主要只是想了解为什么它不能按照我期望的方式开箱即用,以防我在这里遗漏一些概念性的东西,无论是关于 KVO 还是关于 View 几何。

谢谢。

最佳答案

观察 frame 不起作用的主要原因是因为没有 UIKit 属性被定义为 KVO 兼容,除非明确记录为 KVO 兼容。

您没有遗漏任何东西 - 不幸的是,UIKit 不支持您尝试对观察进行的操作。

关于ios - UIView KVO : Why don't changes to "center" cause KVO notifications for "frame"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075056/

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