如何在UINavigationBar sizeToFit中设置UITextField?

时间:2016-01-16 21:42:43

标签: ios swift uinavigationcontroller uitextfield uinavigationbar

我一直无法找到解决此问题的方法。放置在UINavigationBar中时,我无法为UITextField textField提供sizeToFit属性。

我尝试过:textField.sizeToFit()

当然,Interface Builder在放入UINavigationBar时并没有给出任何选项。任何解决方案都很棒,谢谢!

1 个答案:

答案 0 :(得分:5)

textField创建一个插座,然后在viewDidLoad中调用此功能(您也可以直接在viewDidLoad中粘贴以下代码):

func setWidth() {
    var frame: CGRect = self.textField.frame
    frame.size.width = self.view.frame.width
    self.textField.frame = frame
}

<强>结果:

iPhone 6S Plus: enter image description here

iPhone 6: enter image description here

iPhone 5: enter image description here

<强>更新
要更改旋转大小,请添加以下代码行:

viewDidLoad中添加此观察者:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "rotated", name: UIDeviceOrientationDidChangeNotification, object: nil)

添加此功能以检测方向,然后调整textField

的大小
func rotated(){
    if(UIDeviceOrientationIsLandscape(UIDevice.currentDevice().orientation)){
        print("landscape")
        setWidth()
    }

    if(UIDeviceOrientationIsPortrait(UIDevice.currentDevice().orientation)){
        print("Portrait")
        setWidth()
    }
}