2017-02-25 46 views
-2

在我的ViewController我可以居中文本框搭配:的UIView擴展到中心查看

textField.center = CGPoint(x: view.bounds.midX, y: textField.center.y)

爲什麼不是我的推廣工作:

extension UIView { 
    func centerHorizontally() { 
    self.center = CGPoint(x: self.superview!.bounds.midX, y: self.center.y) 
} 


// back in viewcontroller 
emailField.centerHorizontally() 
+1

「爲什麼我的推廣工作」是什麼「不工作」是什麼意思?當你嘗試時會發生什麼? – matt

+0

爲什麼你不使用AutoLayout? –

+0

@matt它只是不居中的文本域 – Apollo

回答

1

確實工作。

enter image description here

這是在我的應用程序的唯一代碼:

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    self.emailField.centerHorizontally() 
} 

的問題是,你正在測試不正確。不幸的是,您還沒有提供任何關於的信息,您如何測試。但一些可能性:

  • 你太很快調用emailField.centerHorizontally(),例如在viewDidLoad,當該領域的超級觀點的界限尚未設置爲其最終值。

  • 您已經使用自動佈局定位emailField。您無法更改受自動佈局影響的視圖的center

  • 您可能沒有考慮到文本字段的文本是左對齊的事實。

  • 其他...

+0

我現在在'viewDidLayoutSubviews()'中調用擴展方法 – Apollo

+0

不要談論你的代碼。 _Show your real code._ – matt

+0

同時我發佈了一個屏幕截圖,證明你的代碼確實將字段居中。 – matt