티스토리 뷰
교육관련 앱을 사용하다보면 동영상 강좌를 볼 때에 화면이 전환되는 것을 확인할 수 있습니다.
iOS에서는 어떻게 화면 전환하는지 알아보겠습니다.
AppDelegate 설정
AppDelegate 부분에서 다음 함수인 UIInterfaceOrientationMask 을 지정하여 화면을 설정합니다.
application(_, supportedInterfaceOrientationsFor) 은
화면 전화에 대한 Delegate 부분으로 자세한 내용은 AppleDeveloper 에서 확인할 수 있습니다.
1 2 3 4 5 6 7 8 | var orientationLock = UIInterfaceOrientationMask.portrait func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { return self.orientationLock } |
화면 회전 소스 부분
화면 회전을 하는 부분은 AppDelegate에서 supportedInterfaceOrientations 의 값을 변경하여 화면 회전을 합니다.
또한 화면 회전 시 회전 하는 ViewController에서 shouldAutoratate() 함수을 True로 변경하여 합니다(override). 만약, shouldAutorate()을 True 로 변경하지 않았을 경우 화면 회전이 안됩니다.
func setLotation(){
if let delegate = UIApplication.shared.delegate as? AppDelegate {
isportrait = delegate.orientationLock != UIInterfaceOrientationMask.portrait
let value: Int
if(isportrait){
delegate.orientationLock = UIInterfaceOrientationMask.portrait
value = UIInterfaceOrientation.portrait.rawValue
}else{
delegate.orientationLock = UIInterfaceOrientationMask.landscape
value = UIInterfaceOrientation.landscapeLeft.rawValue
}
UIDevice.current.setValue(value, forKey: "orientation")
btnPush.text = (isportrait ? "portrait" : "landscape").uppercased()
}
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask{
if isportrait {
return UIInterfaceOrientationMask.portrait
}else{
return UIInterfaceOrientationMask.landscapeLeft
}
}
//회전 허용을 동의를 꼭 하여야 합니다.
override var shouldAutorotate: Bool{
return false
}
swift4 기반으로 제작된 소스 코드입니다. 위에서 언급했듯이 AppDelegate 의 supportedInterfaceOrientations() 값 변경과 shouldAutorate()을 True 변경한 것을 확인할 수 있습니다.
정리
AppDelegate에서 화면 회전을 총괄하고 있습니다. 위에 언급한 내용을 요약하면 다음과 같은 순서로 진행이 됩니다.
1. AppDelegate의 supportedInterfaceOrientations() Mask 값 원하는 방향으로 변경
2. 변경하고자 하는 ViewController의 shouldAutorate() 값 True 변경
화면 회전 방법에 대해서 간단히 공유하였습니다. 기타 질문사항 및 부족한 부분을 댓글로 남겨주시면 수정하겠습니다.
샘플 소스는 여기 를 클릭 하시면 확인 할 수 있습니다.
'프로그래밍 > iOS' 카테고리의 다른 글
[SWIFT] 싱글턴(Signgleton) 패턴 (0) | 2018.01.22 |
---|---|
[SWIFT] Realm 사용법 (0) | 2018.01.19 |
[SWIFT] UIWebView와 WebKit 그리고 ScrollView을 활용한 Pager View (0) | 2018.01.12 |
[SWIFT] UIAlertController Tablet 이슈 (0) | 2018.01.08 |
[Error]앱 스토어 등록 과정 중 Distribution 에러가 발생하는 경우 대응 방안 (0) | 2018.01.04 |
- push
- Android Studio
- 미션차이나센터
- IOS
- Android
- 탁구
- IT
- 고시문
- 패턴
- missionchina
- missioon
- 코틀린
- RXjava
- flutter
- MCC
- 점수판
- java
- swift
- DI
- issue
- 스코어헬퍼
- 임용고시
- 안드로이드
- 고시문헬퍼
- view
- 선교
- Kotlin
- 알고리즘
- 디자인패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |