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
'EXPERIENCE > iOS' 카테고리의 다른 글
[Xcode/iOS] CocoaPods 설치 및 Podfile 명령어 정리 (0) | 2023.01.26 |
---|---|
[Xcode/iOS] Swift TableView 섹션이 있는 확장셀(Expandable Cell) 만들기 (with. xib) (1) | 2023.01.18 |
[Xcode/iOS] iOS 업데이트에 따른 새로운 Xcode 버전 다운받기 (0) | 2023.01.09 |
[Xcode/iOS] Swift 앱스토어(AppStore) 인앱결제(In-App Purchase) 구현하기 (with. Sandbox 테스트) (6) | 2023.01.05 |
[Xcode/iOS] Swift 앱스토어(AppStore) 인앱결제(In-App Purchase)를 위한 유료 앱 설정 (2) | 2023.01.05 |