UIInterfaceOrientation, CGAffineTransform, Рамка, Границы и Центр - PullRequest
2 голосов
/ 13 января 2011

Может кто-нибудь указать мне на хороший учебник по вышесказанному, и что происходит с одним, когда вы связываетесь с другими? Кажется, что независимо от того, что я делаю, когда я начинаю возиться с ориентацией строки состояния или с трансформацией вида (даже если все, что я делаю, это повороты на 90 градусов), я могу рассчитывать на то, что мои взгляды заканчиваются вбок, вверх вниз и назад, и в разочаровывающий день проб и ошибок, пытаясь выправить их. Я уверен, что все это имеет смысл, когда вы знаете логику и порядок, в котором все применяется, но пока, эмпирически, я не смог понять это.

1 Ответ

4 голосов
/ 02 апреля 2012

Я не знаю хорошего учебника для начинающих по одному предмету, но вот что я узнал из опыта и чтения документов:

центр, границы и рамка

Если вы установите рамку, центр и границы будут обновлены.Если вы установите центр или границы, то рамка будет обновлена.Кадр - это удобный метод для управления центром и границами с использованием системы координат суперпредставления.

С Ссылка на класс UIView :

Геометрия вида определяетсяего структура, границы и свойства центра.Рамка определяет начало и размеры представления в системе координат его суперпредставления и обычно используется во время компоновки для настройки размера или положения представления.Свойство center можно использовать для регулировки положения вида без изменения его размера.Границы определяют внутренние размеры представления так, как оно их видит, и используются почти исключительно в пользовательском коде чертежа.Часть размера прямоугольника рамки и границ соединена вместе, поэтому изменение размера любого прямоугольника обновляет размер обоих.

См. Соотношение свойств рамки, границ и центра для получения более подробной информации.

transform

Если вы установите свойство transform для чего-то, кроме преобразования идентификаторов, frame будет неопределеннымЕсли вы установите преобразование на что-то другое, вам следует манипулировать только геометрией вида, используя центр (чтобы расположить вид в его суперпредставлении) и границы (чтобы настроить размер вида).Вот соответствующая информация из UIView Class Reference :

Источником преобразования является значение свойства center или свойство anchorPoint слоя, если оно было изменено.(Используйте свойство layer, чтобы получить базовый объект слоя Core Animation.) Значением по умолчанию является CGAffineTransformIdentity.

...

Предупреждение Если свойство transform не являетсяпреобразование идентичности, значение этого свойства не определено и поэтому должно игнорироваться.

Подробнее см. Преобразования системы координат .

UIInterfaceOrientation

UIInterfaceOrientation не влияет напрямую на свойства transform, bounds, center или frame.Однако, когда ориентация устройства изменяется, контроллер представления автоматически изменяет размер своего подпредставления (что, в свою очередь, изменяет размеры его подпредставлений и т. Д.).

См. Реагирование на изменения ориентации устройства и View Controller View Изменение размера для получения более подробной информации.

...