2015-06-19 4 views
2

В настоящее время я делаю что-то вроде этого:Как программно установить положение кнопки в ИОС с Swift

startButton.frame = CGRectMake(0, 0, startButton.frame.width, startButton.frame.height) 

в viewDidLoad. Однако это не имеет никакого значения.

Каков правильный способ сделать такое?

+0

Вы используете автозапуск? –

+0

Вы не добавляете никакой разницы, хотя .. Что не работает? – iphonic

+0

Код кажется все в порядке. Вы проверили, что startButton.frame.width и startButton.frame.height имеют значения, которые вы ожидаете, а не 0.0, когда попадаете в строку в своем вопросе? – Michel

ответ

2

Используйте это, чтобы изменить положение, если не usign AutoLayout,

var X_Position:CGFloat? = 50.0 //use your X position here 
var Y_Position:CGFloat? = 50.0 //use your Y position here 

startButton.frame = CGRectMake(X_Position, Y_Position, startButton.frame.width, startButton.frame.height) 
+0

Могу ли я использовать это вместе с AutoLayout? – firstprayer

+0

Нет. Если вы работаете с автозагрузкой, тогда смена кадра не будет работать, вы должны обновить свои ограничения по положению. –

+0

Причина голосования? –

0

Ну, лучший способ установить положение вашей кнопки является использование ограничений! вот некоторые из моих, что я использовал :)

`` `быстрые

let storeBtnImg = UIImage(named: "StoreButton") 
    storeBtn.translatesAutoresizingMaskIntoConstraints = false 
    storeBtn.frame = CGRect(origin: CGPointMake(self.frame.width/7.8, self.frame.height/1.9), size: CGSize(width: self.frame.width/10, height: self.frame.height/10)) 
    storeBtn.backgroundColor = nil 
    storeBtn.addTarget(self, action: "storeBtnAction", forControlEvents: .TouchUpInside) 
    storeBtn.setImage(storeBtnImg, forState: UIControlState.Normal) 
    self.view?.addSubview(storeBtn) 

    NSLayoutConstraint(item: storeBtn, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0).active = true 
    NSLayoutConstraint(item: storeBtn, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: -75).active = true ``` 

важные части всегда Remeber установить .translatesAutoresizingMaskIntoConstraints = false

и поставить .active = true в конце вы тягот

Надеюсь, это поможет, удачи!

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