2015-09-23 5 views
0

У меня этот код для моего UIButton. Что я должен изменить в своем CGRectMake, чтобы установить мой UIButton в центре экрана для всех размеров экрана?Как центрировать UIButton в Swift?

let loginBtn = UIButton(frame: CGRectMake(60, 360, 240, 40)) 
loginBtn.layer.borderColor = UIColor.whiteColor().CGColor 
loginBtn.layer.borderWidth = 2 
loginBtn.titleLabel!.font = UIFont.systemFontOfSize(24) 
loginBtn.tintColor = UIColor.whiteColor() 
loginBtn.setTitle("Login", forState: UIControlState.Normal) 
self.view.addSubview(loginBtn) 
+4

Использование AutoLayout. – Fogmeister

+0

Я хотел бы знать это в кодах, а не в макете –

+4

Вы можете сделать автоматическую компоновку в коде. Если вы не используете/не изучаете автомат, вы останетесь позади. Найдите учебное пособие по автоматической компоновке и используйте это. :-) – Fogmeister

ответ

5

Для вашего места UIButton центре вашего зрения, обновить cgrectmake, как bleow ..

CGRectMake((self.view.frame.size.width - 240)/2, (self.view.frame.size.height - 40)/2,240,40) 

или

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

loginBtn.center = self.view.center 

Для Баттона Регистрация:

signup.frame = loginBtn.bounds 
signup.center = CGPointMake(loginBtn.center.x, loginBtn.center.y + loginBtn.frame.size.height + 10) 
+0

Спасибо, я пытался добавить, что простой код после мой код и это сработало :) –

+0

Но я теперь есть кнопки, один для входа и один для signUp, и этот код делает это в центре, так как я могу сделать кнопку signUp чуть ниже кнопки входа? –

3

Установите UIButton «s center к центру view он находится в

loginBtn.center = view.center 
+1

frame также имеет свойство, называемое midX и midY –

+0

Спасибо @LeoDabus. Не знал об этом имуществе. –

+1

Супер-вид, вероятно, также имеет свойство 'center' login_btn.center = view.center' – Wez

1

Это будет центр кнопки через весь экран, а не только мнение это в:.

let verticalCenter: CGFloat = UIScreen.mainScreen().bounds.size.height/2.0 
let horizontalCenter: CGFloat = UIScreen.mainScreen().bounds.size.width/2.0 

loginBtn.center = CGPoint(x: horizontalCenter, y: verticalCenter) 

Edit:

Как @LeoDabus отметил, это может быть уплотнен с помощью свойства midX и midY на CGRect:

let verticalCenter: CGFloat = UIScreen.mainScreen().bounds.midY 
let horizontalCenter: CGFloat = UIScreen.mainScreen().bounds.midX 
+3

Ограничения имеют свойство, называемое midX и midY. –

+0

Не могли бы вы ссылаться на ссылку? Я не могу найти свойства здесь: https://developer.apple.com/library/prerelease/ios/documentation/GraphicsImaging/Reference/CGGeometry/index.html#//apple_ref/c/func/CGRectGetMinX –

+0

http://nshipster.com/cggeometry/ К сожалению, я не могу найти те расширения CGRect на Apple, расширение сайта –

1

Вам нужно добавить следующую строку до начала self.view.addSubview(loginBtn).

loginBtn.center = self.view.center 
+0

Но теперь у меня есть кнопки, один для входа и один для signUp, и этот код делает это в центре, так как я могу сделать кнопку signUp чуть ниже кнопки входа? –

0

Для Swift 4

@IBOutlet weak var btStart: UIButton! 

на середину любого экрана (любого устройства)

btStart.center = self.view.center 

ИЛИ

btStart.center.x = self.view.center.x 
btStart.center.y = self.view.center.y 

по центру на х и 25 процентов от верхнего

btStart.center.x = self.view.center.x 
btStart.center.y = self.view.center.y/2 
Смежные вопросы