[Swift] Autolayout Multiplier 비율 동적으로 적용하기
- 모바일/아이폰
- 2022. 8. 30.
스위프트의 동적 멀티플라이어
오토레이아웃을 사용하다보면 동적으로 멀티플라이어 값을 동적으로 바꿔야 할 경우가 있습니다. 특히나 iPad iPhone을 동시에 개발 할 때 필요합니다. 해당 비율을 동적으로 주기 위해서는 NSLayoutConstraint에 multiplier를 적용해주면 되지만 몇 가지 생각해야 하는 것이 있습니다. 다음과 같이 Constraint를 removeConstraint로 삭제한 뒤에 다시 addConstraint를 이용해 추가해줘야 합니다. 또한 새로 화면을 업데이트 하기 위해서 layoutIfNeeded 함수를 호출해줘야 합니다.
▼ 우선 다음과 같이 extension을 사용해 constraintWithMultiplier라는 함수를 만들어줍니다. 내부적으로 하는 일은 그냥 새로운 NSLayoutConstraint를 반환하는 역할을 합니다.
▼ 다음은 constraintWithMultiplier 익스텐션을 사용해서 .pad 일때와 .phone 일때를 구분합니다. removeConstraint 함수로 이전 constraint를 삭제하고 addConstraint 함수로 새로운 constraint를 추가합니다. 마지막으로 layoutIfNeeded 함수를 호출하고 새로 만들어진 NSLayoutConstraint를 나중에 삭제를 위해서 전역 변수로 저장해 놓습니다.
참고로 위에 코드에서 else 로 처리하면 .tv, .mac, .carPlay를 모두 통용하게 되니 다른 OS를 개발한다면 switch 문으로 적용하는게 좋을 것 같습니다.
'모바일 > 아이폰' 카테고리의 다른 글
[iOS] 아이폰 시뮬레이터 다크모드 설정 (Dark Appearance) (0) | 2022.09.06 |
---|---|
[Swift] RxSwift 스크롤 뷰 무한 스크롤링(Infinite Scroll) (0) | 2022.08.30 |
[Xcode] Code Snippet 코드 스니펫 사용법 및 iCloud 동기화 (0) | 2022.07.07 |
[UIKit] iOS Swift - CollectionView 컬렉션 뷰 만들기 기본 (0) | 2022.05.25 |
[Xcode] #pragma MARK, TODO, FIXME 주석 사용법 (0) | 2021.07.18 |