[ios] 미디어 파일의 재생 중의 화면 자동회전 및 화면 잠금 기능

iOS 앱을 개발하다보면 미디어 파일(동영상, 음악 등)을 재생하는 기능을 구현해야 할 때가 있습니다. 이 때 화면이 일정 각도 이상으로 회전될 때나, 사용자가 회전을 원하지 않을 때에 화면 회전을 제한하거나 잠금하는 기능을 추가할 수 있습니다.

이 포스트에서는 iOS 앱에서 미디어 파일을 재생하는 중에 화면의 자동 회전을 제어하는 방법과 화면을 잠그는 방법에 대해 알아보겠습니다.

화면 자동 회전 제어

iOS에서 기본적으로는 화면이 자동으로 회전하도록 되어 있습니다. 하지만 미디어 파일을 재생할 때는 화면이 회전되는 것을 막고 싶을 수 있습니다.

이를 위해서는 shouldAutorotatesupportedInterfaceOrientations 메서드를 사용하여 미디어 파일이 재생 중일 때 화면의 회전을 제한할 수 있습니다.

예를 들어, 다음과 같이 AVPlayerViewController를 사용하여 미디어 파일을 재생하는 경우를 가정해 보겠습니다.

class MediaViewController: AVPlayerViewController {
    override var shouldAutorotate: Bool {
        return false
    }
    
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .landscape
    }
}

위의 코드에서 shouldAutorotatefalse로 설정하여 화면 자동 회전을 제한하고, supportedInterfaceOrientations를 통해 화면이 회전할 수 있는 방향을 지정합니다.

화면 잠금 기능 추가

미디어 파일을 재생하는 동안 사용자가 화면 회전을 원치 않을 때 화면을 잠근다면, 다음과 같은 방법으로 화면을 잠근다.

// 화면을 잠그는 화면 락 메서드
func lockOrientation() {
    if let orientation = UIApplication.shared.windows.first?.windowScene?.interfaceOrientation {
        switch orientation {
        case .landscapeLeft, .landscapeRight:
            UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
        default:
            break
        }
    }
}

위의 코드에서는 lockOrientation 메서드를 사용하여 현재 화면 방향이 가로 방향일 때에만 세로 방향으로 변경하여 화면을 잠굽니다.

마무리

이렇게 iOS 앱에서 미디어 파일을 재생하는 동안 화면의 자동 회전을 제어하고 화면을 잠그는 방법에 대해 알아보았습니다. 이를 통해 사용자 경험을 향상시키고 사용자가 미디어를 편리하게 시청할 수 있도록 할 수 있습니다.