在 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
时才会被调用:
- 创建自定义视图 .xib 文件
- 创建 UIView 的 .swift 文件子类
- 将文件的所有者设置为您的子类
Set files owner
- 将文件的视图拖到 .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)
}
}
- 现在您可以直接在 Interface Builder 中使用您的子类
Custom view in Interface Builder
- 或以编程方式
Custom view programatically
let view = CustomView()