Всегда ли система будет вызывать UIView layoutSubviews: метод изменения макета, чтобы я мог реагировать на изменения макета? - PullRequest
1 голос
/ 11 апреля 2009

Пример: если пользователь принимает вызов во время использования приложения, система выходит из приложения. Но если пользователь возвращается в приложение, пока он еще находится на вызове, то строка состояния будет выше, чем обычно. Это означает, что он все еще на связи. Однако это приводит к проблемам с макетом. Как я понимаю, система будет отправлять сообщение методу layoutSubviews каждого объекта UIView в моем макете, верно? Произойдет ли это при любом изменении макета, которое вызывается системой?

1 Ответ

1 голос
/ 07 мая 2009

Этот метод не будет вызван базовыми изменениями в геометрии (см. Документы Apple на UIView). Вы можете попробовать установить contentMode представления в UIViewContentModeRedraw, что приведет к тому, что система вызовет drawRect: в вашем представлении для всех изменений геометрии (предположительно, в том числе, когда панель вызова находится на месте). Возможно, вы не захотите вызывать layoutSubviews все время из drawRect: из-за снижения производительности, связанного с полным воссозданием иерархии сложного представления, но вы можете по крайней мере выяснить, какие из подпредставлений необходимо изменить или перерисовать на основе переданного CGRect и изменить только те.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...