设置字体大小时,UIView里面的UITextField在XIB文件中没有正确调整大小

时间:2016-04-13 12:00:32

标签: ios autolayout uitextfield nslayoutconstraint

我有一个UITextField包装在UIView中,制作成自定义类。它在ViewController(storyboard)中工作正常,但是当在XIB文件中的UIView中使用时,行为如下:

如果我将字体大小设置为低于17的任何值,则预期高度为0pt。

如果我将字体大小设置为17,预期高度是正确的(约20个单位)。

如果我将字体大小设置为大于17的任何值,则预期高度为4000pt。

有问题的代码:

import UIKit
import SnapKit

@IBDesignable class AppleBug: UIView {

    // Interface builder values
    @IBInspectable var placeholderText: String = "" {
        didSet { updateUI() }
    }

    @IBInspectable var textSize: CGFloat = 14 {
        didSet { updateUI() }
    }

    // Views
    lazy var textField = UITextField()

    // MARK: Initialization
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupTextField()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupTextField()
    }

    // MARK: View setup
    private func setupTextField() {
        addSubview(textField)
        textField.snp_makeConstraints { (make) -> Void in
            make.edges.equalTo(self)
        }
    }

    // MARK: View updating
    private func updateUI() {
        textField.placeholder = placeholderText
        textField.font = UIFont.systemFontOfSize(textSize)
    }
}

0 个答案:

没有答案