“界面”构建器不会展开自定义视图

时间:2018-02-23 17:23:03

标签: ios swift interface-builder

我创建了一个内部UILabel的自定义视图(FAQItemView),它被约束到superview的四个边。以下是此视图的源代码:

import UIKit

@IBDesignable class FAQItemView: UIView {
    var questionLabel: UILabel = UILabel()

   override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

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

    func setup() {
        translatesAutoresizingMaskIntoConstraints = false
        addSubview(questionLabel)
        questionLabel.translatesAutoresizingMaskIntoConstraints = false
        questionLabel.textColor = UIColor.black
        questionLabel.textAlignment = .center
        questionLabel.numberOfLines = 0
        questionLabel.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
        questionLabel.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true
        questionLabel.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true
        questionLabel.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
        questionLabel.text = "question"
        questionLabel.backgroundColor = UIColor.green
    }
}

我在Interface Builder中添加了FAQItemView,并将其宽度限制为200px。在这种情况下,FAQItemView的内部标签应该扩展到FAQItemView的大小。当我运行app时,一切正常,但在Interface Builder标签中,它位于容器的左侧,具有默认(固有)大小。

示例项目位于https://www.dropbox.com/s/u2923l8exqtg3ir/testapp1.zip?dl=0。这里FAQItemView有红色背景,内部标签有绿色背景。在运行时,红色不可见,因为标签有绿色背景,但在Interface Builder中红色也可见(带绿色背景的标签右侧)

有人可以说我做错了吗?

提前致谢。

UPD: Screenshot of view in interface builder

1 个答案:

答案 0 :(得分:2)

...糟糕

不要在自定义视图本身上设置translatesAutoresizingMaskIntoConstraints = false

所以,只需删除setup()中的第一行:

func setup() {
    //translatesAutoresizingMaskIntoConstraints = false

那应该解决它。