2013-04-11 1 views
5

У меня есть UIButton типа UIButtonRoundedRectType, который я хочу разместить в середине экрана по горизонтали и по вертикали.Как разместить кнопку в середине UIView Горизонтально и вертикально для любого устройства?

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

Итак, я пробовал это, но он не работает.

container = view.frame.size 
button = UIButton.buttonWithType(UIButtonTypeRoundedRect) 
button.frame = [[container.width/2-button.frame.size.width/2,150], [280,50]] 
+0

Вы можете сделать это с помощью раскадровки с помощью ограничения макета. Таким образом, вам не нужно беспокоиться о жестком кодировании. http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1 – Jordan

+0

Что не работает? Что вы используете для «просмотра»? –

+0

(Имейте в виду, что приведенное выше будет сосредоточено только в «представлении». Если «вид» не центрирован, кнопка будет одинаково вне центра.) –

ответ

6

Как насчет:

button.center = [button.superview convertPoint:button.superview.center fromView:button.superview.superview]; 
1

Вы были не слишком далеко. Это работает (я попробовал):

container = view.frame.size 
button = UIButton.buttonWithType(UIButtonTypeRoundedRect) 
button_size = [ 280, 50 ] 
left_margin = (container.width/2) - (button_size[0]/2) 
top_margin = (container.height/2) - (button_size[1]/2) 
button.frame = [[ left_margin, top_margin ], button_size ] 
button.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin 
1

Если вы используете представление в XIB, вы можете использовать, как я уже упомянул.

GO to XIB -> Нажмите на просмотр -> Нажмите на Size Inspector -> Arrange (Здесь вы можете установить положение).

enter image description here

Выберите все свойства Position of Container и Fill Container.

И если вы создаете представление динамически (не в XIB), то вы можете использовать соответствующие границы супервизора.

8

Простой подход:

button.center = view.center;