UIView Autoresizing Ресурсы - PullRequest
       19

UIView Autoresizing Ресурсы

20 голосов
/ 25 января 2010

Я работал над автоматическим изменением размера пользовательского UIView, и Apple очень мало что может сказать по этому поводу. Более того, основываясь на отзывах SO, документация Apple в некоторых областях неверна. Наконец, несмотря на то, что в Интерфейсном Разработчике шесть компонентов для изменения размера и шесть для setAutoresizingMask:, они, похоже, вообще не коррелируют. Например, установка пружины ширины в IB отличается от установки autoresizingMask в UIViewAutoresizingFlexibleWidth при вращении устройства.

Есть ли полезные ресурсы для изучения того, как изменение размера работает на iPhone?

* * 1008 Edit: * * 1010

Я понимаю основные понятия, которые использует Apple, такие как contentMode, и я прочитал документацию UIView. Я ищу кое-что, что более глубоко объясняет, что делают настройки IB с точки зрения того, что доступно в SDK программно.

Ответы [ 5 ]

32 голосов
/ 08 ноября 2010

установка autoresizingMask в UIViewAutoresizingFlexibleWidth эквивалентна установке пружины ширины, плюс левая и правая распорки в Интерфейсном Разработчике (распорки означают, что кромка не гибкая). Если вы хотите повторить поведение только настройки ширины пружины, но не левой и правой распорок, вам придется установить autoresizingMask на UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin

11 голосов
/ 21 июля 2011

Я нашел этот пост полезным для понимания автоматического изменения размера iOS.

http://www.techotopia.com/index.php/IOS_4_iPhone_Rotation,_View_Resizing_and_Layout_Handling

2 голосов
/ 18 апреля 2012

от Apple:

... укажите значение этой маски путем объединения констант, описанных в UIViewAutoresizing используя оператор C побитового ИЛИ. Объединяя эти константы позволяют указать, какие размеры представления должны расти или сжать по отношению к суперпредставлению. Значение по умолчанию этого свойства UIViewAutoresizingNone, который указывает, что представление не должно быть изменил размеры вообще.

... Например, Предположим, что это свойство включает в себя UIViewAutoresizingF FlexibleWidth и UIViewAutoresizingF flexRightMargin константы, но не включает константа UIViewAutoresizingF flexLeftMargin, , что указывает на что ширина левого поля вида фиксирована , но вид ширина и правое поле могут измениться. Таким образом, вид кажется привязанным к левая сторона его суперпредставления в то время как ширина вида и зазор справа от увеличения зрения.

Если поведение авторазмера не предлагает точный макет, который вы нужно для ваших представлений, вы можете использовать пользовательский вид контейнера и переопределить его метод layoutSubviews для более точного позиционирования ваших подпредставлений.

Поэтому, если вы хотите расположить представление, привязанное к верхней и правой части его суперпредставления, вы можете применить маску, например:

[myView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin];
1 голос
/ 25 января 2010

superview имеет такие параметры, как contentMode и autoresizesSubviews , которые все с autoresizingMask его подпредставлений делают поведение изменения размера

читай внимательно http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

0 голосов
/ 13 июля 2011

Для записи я почесал голову в течение часа, потому что моя однострочная UILabel просто НЕ будет автоматически настраивать размер шрифта, чтобы соответствовать ширине. Наконец, это сделало свое дело:

label.contentMode = UIViewContentModeScaleAspectFit;

Я гуглил, и никто, кажется, не прояснил эту деталь (все говорят, что метка должна быть 1 строкой, установите AdjusttsFontSizeToFitWidth / минимумFontSize и т. Д.). Возможно, значение этого свойства по умолчанию изменилось? Я на iOS 4.3.

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