繁体   English   中英

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

[英]programmatically customize UIView in xib

我已经使用UIView创建了Xib文件,然后创建了一个连接到xibs文件所有者的自定义UIView类。 但是我不确定如何以编程方式创建一些东西。 我试图添加awakeFromNib函数,但是似乎无法正常运行,为了以编程方式更改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
}

您可以更改任何此类的backgroundColor。

self.view.backgroundColor = [UIColor redColor];

希望这可以帮助。

仅当这样调用UINib才会调用awakeFromNibhttps : UINib

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

设置文件所有者

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

连接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中使用子类

Interface Builder中的自定义视图

  1. 或以编程方式

以编程方式自定义视图

let view = CustomView()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM