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

问题描述 投票:0回答:3

我用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
}
ios swift xib
3个回答
0
投票

只有在这样调用awakeFromNib时才会调用UINibhttps://stackoverflow.com/a/25513605/846780


0
投票

你可以改变任何像这样的背景颜色。

self.view.backgroundColor = [UIColor redColor];

希望这可以帮助。


0
投票
  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()
© www.soinside.com 2019 - 2024. All rights reserved.