在 xib 中以编程方式自定义 UIView

programmatically customize UIView in xib

我创建了一个带有 UIView 的 Xib 文件,然后创建了一个连接到 xibs 文件所有者的自定义 UIView class。但是我不确定如何以编程方式创建某些东西。我尝试添加 awakeFromNib 函数,但它似乎不是 ro 运行,应该实现什么方法才能以编程方式更改 backgroundColor?

func loadViewFromNib() -> UIView {

    let bundle = NSBundle(forClass: self.dynamicType)
    let nib = UINib(nibName: "MediaPlayer", bundle: bundle)
    let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView

    return view
}

您可以像这样更改任何背景颜色。

self.view.backgroundColor = [UIColor redColor];

希望对您有所帮助。

awakeFromNib 只有在像这样调用 UINib 时才会被调用:

  1. 创建自定义视图 .xib 文件
  2. 创建 UIView 的 .swift 文件子类
  3. 将文件的所有者设置为您的子类

Set files owner

  1. 将文件的视图拖到 .swift 文件中并将其命名为 contentView

Connect IBOutlet

您的 UIView 子类应如下所示:

class CustomView : UIView {


  @IBOutlet weak var contentView: UIView!



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

  override func awakeFromNib() {
    super.awakeFromNib()
    setup()
  }

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

  func setup() {
    Bundle(for: CustomView.self).loadNibNamed(String(describing: CustomView.self), owner: self, options: nil)
  }
}
  1. 现在您可以直接在 Interface Builder 中使用您的子类

Custom view in Interface Builder

  1. 或以编程方式

Custom view programatically

let view = CustomView()