如何在IB中设计自定义可重用视图并查看故事板中的内容?

时间:2015-10-06 01:44:08

标签: ios swift interface-builder

我想在故事板中设计一个可重复使用的视图。

例如,我可能会设计一个自定义视图,该视图将放置在两个不同表中的原型单元格内,主要是我为此视图设计一次布局,然后多次重复使用。

  1. 此自定义视图 将包含“根”视图和各种标准控件(即 ImageView的标签等)作为“根”视图的子视图。
  2. 我想使用自动布局来定义约束 这些标准视图之间的关系以及它们的约束 与“根”观点的关系。
  3. 然后我想在多个地方引用这个自定义视图 在我的主要故事板中,实际上看到了这个时的子视图 自定义视图位于我的主故事板中。
  4. 我一直在尝试this方法,虽然视图确实显示我运行应用程序时,我仍然只看到一个空白视图,我在故事板中使用它。 我的目标是在设计故事板时也看到子视图。

    这是我的UIView的自定义子类

    @IBDesignable
    class UserView: UIView {
    
      @IBOutlet weak var contentView: UserView!
      @IBOutlet weak var aLabel: UILabel!
    
      override func awakeFromNib() {
        super.awakeFromNib()
        NSBundle.mainBundle().loadNibNamed("UserView", owner: self, options: nil)
        contentView.translatesAutoresizingMaskIntoConstraints = false
        addSubview(self.contentView)
        superview?.addConstraint((NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: superview, attribute: NSLayoutAttribute.Left, multiplier: 1.0, constant: 0.0)))
        superview?.addConstraint((NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: superview, attribute: NSLayoutAttribute.Right, multiplier: 1.0, constant: 0.0)))
        superview?.addConstraint((NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: superview, attribute: NSLayoutAttribute.Top, multiplier: 1.0, constant: 0.0)))
        superview?.addConstraint((NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: superview, attribute: NSLayoutAttribute.Bottom, multiplier: 1.0, constant: 0.0)))
      }
    }
    

    我创建了一个只包含标签的简单UserView.xib文件 将它的文件所有者设置为包含该类的UserView.swift文件。 enter image description here 我通过添加UIView,然后将其类设置为UserView,将视图添加为另一个视图的子视图,但我没有在故事板中看到标签。

    enter image description here

    当我运行应用程序时,我会看到自定义视图(带有标签)。

    enter image description here

    谁能看到我在这里做错了什么?

0 个答案:

没有答案