gpt4 book ai didi

iphone - 如何键值观察 CALayer 的旋转?

转载 作者:行者123 更新时间:2023-12-03 21:24:44 25 4
gpt4 key购买 nike

我可以这样访问该值:

NSNumber* rotationZ = [myLayer valueForKeyPath:@"transform.rotation.z"];

但由于某种原因,如果我尝试 KV 观察该关键路径,则会收到编译器错误。首先,我尝试这样做:

[myLayer addObserver:self forKeyPath:@"transform.rotation.z" options:0 context:nil];

编译器告诉我:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ addObserver: forKeyPath:@"rotation.z" options:0x0 context:0x528890] was sent to an object that is not KVC-compliant for the "rotation" property.'

我不明白的是,为什么我可以通过 KVC 键路径访问该 z 值,但不能向其添加观察者。这有道理吗?

我还能如何观察该矩阵的 z 值?我不关心矩阵的其他值。仅 Z 轴旋转。还有其他方式访问和观察它吗?

最佳答案

CALayertransform 属性是一个结构体,而不是一个对象,因此它不符合 KVC 标准。

您应该能够做的是,绑定(bind)到变换属性并在收到 KVO 通知时拉出 Z 值,而不是绑定(bind)到 Z 旋转。

我认为这里的困惑在于,当您在 NSObject 上使用点表示法时,您实际上是在使用该对象的 - (id)property- (void)setProperty 方法,符合 KVC 标准。当您在结构上使用点表示法时,您正在访问该结构的成员,而不是调用方法。

关于iphone - 如何键值观察 CALayer 的旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1260704/

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