Я пытаюсь углубить свое понимание этих механизмов. У меня есть UIView с сенсорным включением, и я могу обновить свое собственное свойство center
.
Насколько я понимаю, свойство frame
является синтезированной функцией center
и bounds
. Предполагая, что это правда, я поставил наблюдателя на свой осязаемый / подвижный вид, который наблюдал его свойство frame
. Но этот наблюдатель никогда не уведомляется об изменениях кадра (которые происходят автоматически при изменении center
). Если я наблюдаю center
напрямую, он работает как положено.
Почему наблюдение frame
не работает здесь?
Обратите внимание, что я знаю, что могу просто наблюдать center
напрямую, и это нормально. Я также могу окружить изменение по центру методами will / did для frame
, что также работает:
[self willChangeValueForKey:@"frame"];
[self setCenter:center];
[self didChangeValueForKey:@"frame"];
Но я в основном просто хочу понять, почему это не работает «из коробки» так, как я ожидаю, что оно будет работать, на случай, если я упущу что-то здесь концептуально, будь то в KVO или в геометрии вида.
Спасибо.