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

时间:2015-08-10 12:26:46

标签: ios swift 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
}

3 个答案:

答案 0 :(得分:0)

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

self.view.backgroundColor = [UIColor redColor];

希望这有帮助。

答案 1 :(得分:0)

只有在调用awakeFromNib时才会调用

UINibhttps://stackoverflow.com/a/25513605/846780

答案 2 :(得分:0)

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

    1. 将文件的视图拖到.swift文件中,并将其命名为contentView
    2. 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
      2. 中使用您的子类

        Custom view in Interface Builder

        1. 或以编程方式
        2. Custom view programatically

          let view = CustomView()