viewDidLoad
/에 제약 조건을 설정했습니다 loadView
(iOS> = 6을 타겟팅하고 있습니다). updateViewConstraints
제약 조건 값을 변경하는 데 유용합니다. 예를 들어 어떤 제약 조건이 화면의 방향에 따라 달라지는 경우 (나쁜 습관입니다) constant
이 방법에서 변경할 수 있습니다 .
에 제약을 추가하는 viewDidLoad
것은 39:22부터 시작하는 "iOS 및 OS X 용 자동 레이아웃 소개" (WWDC 2012) 세션에서 표시됩니다. 나는 그것이 강의 중에 말한 것 중 하나라고 생각하지만 문서에 포함되지는 않습니다.
업데이트 : View Controllers의 리소스 관리에서 제약 조건 설정에 대한 언급을 발견했습니다 .
스토리 보드를 사용하는 대신 프로그래밍 방식으로 뷰를 만드는 것을 선호하는 경우 뷰 컨트롤러의 loadView
메서드를 재정의하면됩니다 . 이 메소드의 구현은 다음을 수행해야합니다.
(...)
3. 자동 레이아웃을 사용 하는 경우 방금 만든 각보기에 충분한 제한을 할당하여보기의 위치와 크기를 제어합니다 . 그렇지 않은 경우 viewWillLayoutSubviews
및
viewDidLayoutSubviews
메서드를 구현 하여 뷰 계층 구조에서 하위 뷰의 프레임을 조정합니다. “View Controller의보기 크기 조정”을 참조하십시오.
업데이트 2 : WWDC 2015 기간 동안 애플은 새로운 설명했다 의 updateConstraints
및 updateViewConstraints
권장 사용 :
실제로,이 모든 것은 뷰가 다음 레이아웃 패스를 위해 제때에 제약 조건을 변경할 수있는 기회를 제공하는 방법이지만 실제로는 필요하지 않은 경우가 많습니다.
모든 초기 제약 설정은 이상적으로 Interface Builder 내에서 발생해야합니다.
또는 제약 조건을 프로그래밍 방식으로 할당해야하는 경우 viewDidLoad와 같은 위치가 훨씬 좋습니다.
업데이트 제약은 주기적으로 반복해야하는 작업에만 해당됩니다.
또한 그렇게해야 할 필요가있을 때 제약 조건을 변경하는 것은 매우 간단합니다. 반면에 해당 로직을 관련된 다른 코드와 분리하여 나중에 실행되는 별도의 메서드로 이동하면 코드를 따르기가 훨씬 더 어려워 지므로 유지 관리가 더 어려워집니다. , 다른 사람들이 이해하기가 훨씬 더 어려울 것입니다.
그렇다면 언제 업데이트 제약을 사용해야합니까?
음, 그것은 성능으로 귀결됩니다.
제약 조건을 변경하는 것이 너무 느리다면 업데이트 제약 조건이 도움이 될 수 있습니다.
업데이트 제약 조건 내에서 제약 조건을 변경하는 것이 실제로 다른 시간에 제약 조건을 변경하는 것보다 빠릅니다.
그 이유는 엔진이이 패스에서 발생하는 모든 제약 변경 사항을 배치로 처리 할 수 있기 때문입니다.