2017-02-25 40 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