在哪里以编程方式构建视图与使用nib

Ben*_*ard 7 interface-builder uiviewcontroller uiview nib ios

我已经搜索了很多,并通过几本教科书进行了挖掘,但我真正欣赏的是在iOS应用程序中定义UIView子类的最佳实践的简单解释.

  • 如果使用xib,我可以在运行开始时在哪里添加/调整控件?
  • 如果以编程方式构建,我应该在ViewController(loadView?)还是单独的UIView子类中执行此操作?如果是后者,我如何指定它的文件的owener,这样如果它被添加为子视图,它知道它的控制器是谁?
  • 你在awakeFromNib,loadView,viewDidLoad,UIView.init,UIViewController.init等中放置了什么?
  • 您经常使用哪些其他方法?

我不需要超级具体的说明 - 我更希望找到一个快速参考指南,解释在每种可用方法中应该使用哪种代码.

Mar*_*lch 6

我的做法是:

  • 在单独的文件中创建自定义UIView子类.
  • 在UIViewController的init中创建所有非UI对象
  • 在UIViewController的loadView中创建我的自定义UIView并将其设置为控制器的self.view
  • 在UIViewController的viewDidUnload(当内存警告时调用)释放所有UI组件(我的自定义UIView)
  • 在UIViewController的dealloc中释放所有非UI对象

在我的自定义UIView子类中我:

  • init方法中创建所有子视图并在dealloc中释放它
  • 在layoutSubviews中我以这种方式设置子视图的帧以确保,仅在更改时设置帧.这是因为重新绘制子视图很昂贵:
if ( !CGRectEqualToRect(__subview.frame, rect) ) {
  __subview.frame = rect;
}
Run Code Online (Sandbox Code Playgroud)

这就是我在所有UIViewControllers中所做的.我不使用IB,一切都是以编程方式创建的.

希望能帮助到你!