iOS 타이틀레이블 위치 강제 조정
iOS 네비게이션바(Navigationbar)의 좌우 툴바버튼이 폭 균형이 맞지 않을경우, 타이틀 레이블의 중앙 정렬이 한쪽으로 쏠리면서 좋지 않게 보인다. 이를 방지하여 레이블을 강제로 중앙 정렬하기 위해서 다음과 같은 방법들이 있으니 상황에따라서 적절히 적용하면 된다.
방법1:
viewWillAppear:
에서 titleView를 hide했다가 viewDidAppear
에서 titleView의 위치를 원하는대로 설정 후 unhide
이경우 타이틀레이블의 트랜지션 애니메이션은 보이지 않게되니 네비게이션 push동작이있는 상황에서는 쓰지 않는것을 추천한다.
방법2:
네비게이션바의 타이틀뷰에 UILabel
을 상속받은 CustomTitleLabel
를 set.navigationItem.titleView = [[CustomTitleLabel alloc] init];
네비게이션바의 레이아웃이 조정될때 자동으로 titleView의 frame값도 같이 조정되게 되는데, 기본적으로 중앙정렬을 하는 동작이 일어나게 된다. 해당 동작이 일어나는 것을 막기위해 CustomTitleLabel
의 setFrame:
메서드를 오버라이드하여 setFrame:
의 동작을 마음대로 조정한다.
오버라이드된 setFrame:
이 여러번 불리면서 부작용이 있을수가 있으니 특별한 경우에만 주의해서 사용한다.
방법3:
CustomWrapperView안에 UILabel을 subview로 추가한 후 해당 서브뷰의 위치를 제어하는 트릭을 이용한다.
CustomWrapperView의 frame이 변경될때 자동으로 viewDidLayoutSubview가 호출되는데 이 메서드 안에서 서브뷰로 추가되어있는 레이블의 위치를 적절히 설정해준다.
'IOS > xcode | IOS' 카테고리의 다른 글
allocWithZone: 의 의미 (0) | 2019.12.20 |
---|---|
NSTimer 백그라운드 진입시 동작 분석 (0) | 2019.12.20 |
iOS, Mac 앱 개발시 하위 호환성 유지 (0) | 2019.12.20 |
코코아팟(CocoaPods) 젠킨스(Jenkins) 설정 연동 (0) | 2019.12.20 |
Xcode CocoaPods 설치 및 사용법(Swift) (0) | 2019.07.16 |
Xcode AppStore에 앱 배포하기 (0) | 2019.07.16 |
Xcode SideMenu 구성하기(MFSideMenu) (0) | 2019.07.16 |
Fastlane을 이용한 Ad-Hoc용 ipa 만들기 (0) | 2019.07.16 |