Objective-C/Swift(iOS)何时在View/ViewController工作流中应用自动约束?

pke*_*y06 6 iphone constraints ios awakefromnib swift

我有一些问题要确定何时在视图设置过程中应用auto-contraintsa XIB上的设置.

有关更多说明:

  • 我已经设置了XIB一个视图
  • 我将"模拟指标"大小设置为iPhone 3.5英寸
  • 我已将自动约束添加到此视图中的子视图
  • 在View Controller中,我根据方法中的subview(IBOutlet)执行某些操作frames/boundsviewDidLoad
  • 在视图我执行依赖于子视图(某些操作IBOutlet)frames/boundsawakeFromNib方法

在这两个方法(ViewController::viewDidLoad and View::awakeFromNib)中,IBOutlet视图已加载但尚未应用约束.当使用更大的模拟器(例如iPhone 6模拟器)时,实际帧仍然设置为iPhone 3.5"大小(宽度320)".

何时应用这些自动约束以及何时需要执行需要子视图的ACTUAL框架/边界的必要操作?

我正在使用XCode 6.3,Swift(1.2)

Mic*_*uba 11

约束在该layoutSubviews方法中应用.因此,如果您想在UIView子类中应用它们之后执行某些操作,请覆盖该方法:

   override func layoutSubviews() {
    super.layoutSubviews()
    //the frames have now their final values, after applying constraints
  }
Run Code Online (Sandbox Code Playgroud)

UIViewController子类中,viewDidLayoutSubviews用于相同的目的:

  override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    //the frames have now their final values, after applying constraints
  }
Run Code Online (Sandbox Code Playgroud)

请注意,如果您为此视图添加了自动布局约束,则不应设置frame/ bounds作为视图.