본문 바로가기

EXPERIENCE/iOS

[Xcode/iOS] Swift 동적으로 제약조건(constraints) 또는 Auto Layout 변경하는 법 (with. Programmatically)

728x90
728x90
SMALL

 

 

StoryBoard를 이용해 개발을 진행하다보면 특정 조건에 의해 앱 실행 중

동적으로 제약조건(constraints)이 변경되어야하는 경우가 발생한다.

특히 높이나 너비가 달라져야하는 일이 종종 필요한 것 같다

 

물론 가능하다면 StackView를 이용하여 간단히 해결할 수 있겠지만,

그러지 못하는 경우에 사용할 수 있는 방법을 메모해 두고자 한다.

 

 

 

728x90

 

 

 

 

예시

 

  • 현재 상태

하단의 핑크색 View가 설정되어있다. (Height = 60)
특정 조건이 달성되었을 때 하단의 View가 사라지거나 줄어들어야할 경우

 

  • 변경될 상태

결과를 눈으로 먼저 보자면 Height = 0 또는 원하는 수치로 변경될 것이다
그에 따라 스토리보드에서도 모습이 변하는 것을 볼 수 있다.

 

  • 사전 작업

해당 작업을 앱 실행 중 코드로 수행하기 위해서는 필요한 제약조건(constraints)을 더블 클릭하여 상세내역으로 들어간 뒤,
Identifier를 설정해주어야 한다.

 

 

 

코드

 

  • 세팅
let constraintKey = "adHeight"
var constraint:NSLayoutConstraint?

constraint = adView.constraints.first(where: { $0.identifier == constraintKey })
viewDidLoad() 혹은 특정 위치에 해당 코드를 삽입하고 설정한 Identifier를 이용해 필요한 제약조건을 찾는다

 

  • 변경
guard let constraint = constraint else { return }
constraint.constant = 0
필요한 시점에 값을 변경하면 앱 실행 중에도 조건이 변경 된 것을 확인할 수 있다.

 

 

 

SwiftUI를 사용하면 고민할 필요 없는 부분일 것 같은데..

StoryBoard를 쓰는 경우에는 종종 필요하게 되는 것 같다.

추후에는 SwiftUI를 써보며 어떻게 달라지는지 체크해볼예정이다.

 

 

 

 

 

 

728x90
728x90
LIST