2016-09-22 41 views
0

好吧,我添加了一個按鈕,.swift故事板,我已經加入以下代碼,以我的ViewController.swiftSwift3中心的UIButton

@IBOutlet weak var HelloButton: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    HelloButton.frame.origin.x = view.frame.size.width/2 



} 

但是當我測試它在我的iPhone 5S它移動它在我的屏幕右側,並沒有讓它居中。我不確定我需要做什麼才能使按鈕居中。

是的這是我的第一個helloWorld應用程序,也許在我的頭上,但我理解網絡編程,我明白要使它自動居中,我需要有屏幕視圖寬度總和按鈕寬度。然後我需要說的按鈕,通過2

例如在CSS分割屏幕視圖寬度,我們做這個

#button{margin:0 auto;} 

但這不是HTML和CSS。 IT'S SWIFT3

+0

如果您使用的是故事板就應該添加在界面生成器的限制;水平居中和垂直居中。如果您使用自動佈局,則無法修改框架。 – Paulw11

+0

嘗試移動到viewWillAppear或可能更好,viewWillLayoutSubviews。在viewDidLoad期間,框架並不總是設置正確。 – Mike

回答

2

試試這個:

HelloButton.center.x = view.frame.width/2 

你們是不正確的,因爲origin.x是第一點按鈕視圖(左上),視圖的不是中心,你可以改變它的背景顏色不同顏色看看它

此外,變量名應該是小寫的,其次是代碼約定

+0

這工作對我來說,並實現了我期待的外觀我把這個代碼與@Wilson Balderrama 這個代碼合併在一起。我試圖將這段代碼直接放入viewDidLoad區域,並且在它工作時,它在屏幕旋轉時不會自動居中。 這個問題得到答案的原因是因爲它回答了我提出的直接問題,但對於更詳細的答案,兩個人Tj3n&Wilson的答案需要合併。 – RussellHarrower

+0

如果您使用自動佈局方式,它將在旋轉後用新佈局更新您的視圖:D它確實比編程更好,這種方式需要您再次調用您的UI佈局,一個提示是,如果您將此代碼放在'viewDidLayOutSubView' 'viewDidLoad'它可能會自動爲你更新 – Tj3n

0

在項目自動佈局啓用?如果自動佈局啓用,則更改viewdidLoad中的UI:可能無法給出適當的結果。使用-viewWillLayoutSubviews方法來執行UI任務,它想讓你的按鈕居中對齊

myButton.center = self.view.center 

希望它能起作用。

0

將代碼添加到viewDidAppear,這樣實際視圖顯示出來了。另外,如果你想它

2

您應該使用自動佈局爲實現你想要什麼,你做的方式就像是主營內你的ViewController以下居中,你應該使用button.center.x而不是button.frame.origin.x。故事板:(控制+鼠標左鍵點擊 - >拖動藍線向上,然後釋放控制鼠標左鍵單擊,你會看到彈出

在彈出的選擇選項:

  • 中心平鋪在容器
  • 中心垂直於集裝箱

但是,如果你想這樣做編程,做在viewWillLayoutSubviews方法:

class ViewController: UIViewController { 

    @IBOutlet weak var button: UIButton! 

    override func viewWillLayoutSubviews() { 
    super. viewWillLayoutSubviews() 

    button.center = view.center 
    } 

} 
+0

感謝您提供覆蓋功能 - 已經閱讀了「來自蘋果iBook商店的Swift編程語言2.3,除非我在錯誤的地方看這本書, – RussellHarrower

+0

你應該總是調用super的方法,否則父類提供的功能將不會被執行。 – Wilson