auto

iOS 8 の端末にて、layoutSubViews() の中で setNeedsUpdateConstraints() を呼んでいるにもかかわらず、updateConstraints() が呼ばれなくてビューのレイアウトが正しくならない事象が起こりました。iOS 9 以降の端末では updateConstraints() が呼ばれるので問題ありませんでした。

どうも AutoLayout ベースのビューの場合、requiresConstraintBasedLayout() をオーバーライドして true を返さないといけないようです。

func requiresConstraintBasedLayout() -> Bool {
  return true
}

これで iOS 8 の端末でも updateConstraints() が呼ばれるようになりました。

参考

iOSアプリケーションでコードベースのレイアウトを積極利用する - クックパッド開発者ブログ