2012-03-26 3 views
2

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

Вот отрезал моего код

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, но когда он поворачивается пейзаж большая пустая область остается на правой стороне экрана. Как я могу это исправить (я имею в виду, когда я поворот, я хочу, чтобы кнопки попали в центр ширины scren в)

EDIT: Я играл с автоматическим изменением на размере инспекторе (Xcode 4.3) с моим XIb файл, и он отлично работает, но независимо от того, что я сделал, я не мог изменять размер динамически создаваемых кнопок после вращения. Я пробовал почти все AutoresizingMask enums of UIView, но ничего не меняется. Может кто-то помочь

ответ

1

атрибуты, которые вы» вы создали в вашем файле построителя интерфейса атрибуты UIViewAutoresizing.

Посмотрите на this documentation from Apple on the UIView class (какая ваша кнопка является подклассом); найдите атрибут UIViewAutoresizing. Это то, что вам нужно.

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

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

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

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

+0

Я решил, что кадры статически (frame = ...), так что я его использую, ничего не меняет. Можете ли вы привести пример кода? – ilhnctn

+0

Обновлено, чтобы включить код для вас. – bryanjclark

+0

Вы можете увидеть мое редактирование – ilhnctn

2

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

Вы посмотрите на можете: 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]; 
+0

Спасибо @ggrana, вы можете видеть мое редактирование? – ilhnctn

+0

Я не понял, что именно вы хотите, но вы попробовали маску, которую я там положил? Если вам нужны более сложные операции, вы можете сделать то, что находится в документе apples, в http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html и переопределить значение shouldAutorotateToInterfaceOrientation: – ggrana

+0

I хотите изменить размер кнопок. И я создаю эти кнопки динамически – ilhnctn

 Смежные вопросы

  • Нет связанных вопросов^_^