加载链接到xib的自定义UIView的最佳方法

时间:2014-10-25 17:15:35

标签: ios objective-c uiview swift xib

我是UIView的子类(它将是一个基本菜单),这个自定义视图链接到一个xib文件 它的设计。

文件是:

  • CustomView.swift
  • CustomView.xib

我也在使用storyboard,它只有一个控制器(初始 viewcontroller),它以这种方式加载CustomView(在 viewDidLoad 方法中):< / p>

self.menuView = CustomView(frame: self.view.bounds)
self.view.addSubview(self.menuView!)

我将覆盖CustomView类的init方法:

override init(frame: CGRect) {
    super.init(frame:frame)
    var view = UINib(nibName: "CustomView", bundle: nil).instantiateWithOwner(self, options: nil).lastObject() as CustomeView
    self.frame = frame
    view.frame = frame
    self.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
    view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
    self.addSubview(view)
}

这很有效,但问题是我在另一个CustomView中有一个CustomView(使用self.addSubview(view)

有没有更好的方法呢?

非常感谢任何评论!

2 个答案:

答案 0 :(得分:1)

您也可以使用:

self.menuView  =  NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil)[0] as? CustomView
self.view.addSubview(menuView)

答案 1 :(得分:0)

这不是一个好方法。

直接做;

    self.menuView = UINib(nibName: "CustomView", bundle: nil).instantiateWithOwner(self, options: nil).lastObject() as CustomeView
    //set frame & mask of self.manuView if required
    self.view.addSubview(self.menuView!)

BTW如果使用xib,则无需从代码中设置帧和掩码。