티스토리 뷰

반응형

교육관련 앱을 사용하다보면 동영상 강좌를 볼 때에 화면이 전환되는 것을 확인할 수 있습니다.

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 변경


화면 회전 방법에 대해서 간단히 공유하였습니다. 기타 질문사항 및 부족한 부분을 댓글로 남겨주시면 수정하겠습니다. 
샘플 소스는 여기 를 클릭 하시면 확인 할 수 있습니다.


반응형
댓글