Как обрабатывать авторазмеры для элементов UIButton, которые были созданы динамически - PullRequest
2 голосов
/ 26 марта 2012

Я динамически создаю несколько кнопок на своем виде и определяю их фреймы в соответствии с некоторыми параметрами моего JSON-ответа.Но я хочу автоматически изменить их размер, когда устройство (димулятор) вращается.Я легко могу сделать это в конструкторе интерфейсов, но ничего не могу сделать в динамических.Может кто-нибудь помочь? РЕДАКТИРОВАТЬ

Вот фрагмент моего кода

if (button.tag==1) {
    button.frame = CGRectMake(30.0f, yPosition, 200.0f, buttonHeight);
}
if (button.tag==2) {
    button.frame = CGRectMake(280.0f, yPosition, 200.0f, buttonHeight);
}
if (button.tag==3) {
    button.frame = CGRectMake(530.0f, yPosition, 200.0f, buttonHeight);
}

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

РЕДАКТИРОВАТЬ: Я играл с авторазмером на Size Inspector (Xcode4.3) с моим файлом xib, и он прекрасно работает, но что бы я ни делал, я не мог изменить размер динамически созданных кнопок после поворота.Я перепробовал почти все AutoresizingMask перечисления UIView , но ничего не изменилось.Может кто-нибудь, пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 26 марта 2012

Вы можете определить с помощью кода, какое поведение было ожидаемым при повороте устройства.

Вы можете взглянуть на: http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

и

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/c/tdef/UIViewAutoresizing

Вам нужно установить поведение кнопки при добавлении, например:

[button setAutoresizingMask:UIViewAutoresizingFlexibleBottomMargin]; 
1 голос
/ 26 марта 2012

Атрибуты, которые вы установили в файле построителя интерфейса, - это атрибуты UIViewAutoresizing.

Посмотрите эту документацию от Apple на класс UIView (который является вашей кнопкойявляется подклассом);ищите атрибут UIViewAutoresizing.Это то, что вам нужно.

Обновление: Вот фрагмент кода для MKMapView, который использует эту возможность:

mainMapView = [[MKMapView alloc] initWithFrame:CGRectMake(20, 239, 280, 122)];
[mainMapView setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];

С UIViewAutoresizingFlexibleTopMargin,представление карты перемещается вниз, когда пользователь отвечает на телефонный звонок - оно фиксирует положение карты относительно верхней части экрана.

Просмотрите документацию, и вы найдете маску автоматического изменения размера, которая лучше всего подходит для вашегоситуация.

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