- Incrementaly adoption auto layout - IB에서
- constraint가 없는 뷰
- autoresizingMask가 costraint로 런타임에 바뀐다.
- constraint가 있는 뷰
- Design and Runtime Constraints
- placeholder constraints
- 빌드할 때, 해당 Constraint를 제거하고, 런타임에 해당 Constraint를 넣어줄 수 있다.
- Intrinsic size
- 임의의 플레이스 홀더 값을 줄 수 있다
- 런타임에는 실제 intrinsic Content Size를 줘야 한다.
- View 단위로 ambiguity 해결
- NSGridview
- StackView로 하기 어려운 align 작업을 하기 위해 나온 뷰
- 명시적인 grid선언(NSGridRow, NSGridColumn)으로 이루어짐
- 각 NSGridCell에 ContentView를 관리
- 기본적으로 전역적으로 설정을 따라가면, 셀별로 개별적으로 정렬 설정 가능
- 셀 머지도 가능
- Layout Feedback loop
- 레이아웃 변화가 무한 루프를 도는 현상
- 이를 확인하기 위한 방벙
-UIViewLayoutFeedbackLoopDebuggingThreshold 100 // 50...1000
-NSViewLayoutFeedbackLoopDebuggingThreshold 100 // 50...1000
// Logs to com.apple.UIKit:LayoutLoop or com.apple.AppKit:LayoutLoop
po [_UIViewLayoutFeedbackLoopDebugger layoutFeedbackLoopDebugger]
- 어떻게 일어나는가?
- subView에서 Superview의 bound를 변경하는경우
- 애매한 레이아웃
- constraint 업데이트는 레이아웃보다 먼저 일어난다.
- 보통은 심각한 문제로 이어지지 않지만, 가끔 애매한 constraint는 진동하는 레이아웃 변화(끝나지않는)를 만들어낸다. -> 업데이트 때마다 레이아웃 값이 달라진다던지…