나는 지금 AVPlayerLayer를 표시하기 위해 AirPlay로 작업하고 있습니다. 여기에 내 코드의 조각입니다 :경계로 (0, 0, 0, 0)을 반환하는 AirPlay 외부 화면
let secondScreen = UIScreen.screens()[1]
secondScreen.overscanCompensation = UIScreenOverscanCompensation(rawValue: 3)!
let screenBounds = secondScreen.bounds
self.secondWindow = nil // free window when switching between two AirPlay devices
self.secondWindow = UIWindow.init(frame: screenBounds)
self.secondWindow?.screen = secondScreen
layer.removeFromSuperlayer()
layer.frame = screenBounds
layer.videoGravity = AVLayerVideoGravityResizeAspect
self.externalAirPlayView = nil // free view when switching between two AirPlay devices
self.externalAirPlayView = UIView(frame: screenBounds)
self.externalAirPlayView!.layer.addSublayer(layer)
self.secondWindow?.addSubview(self.externalAirPlayView!)
self.secondWindow?.makeKeyAndVisible()
이 코드는 일반적으로 잘 작동,하지만 때로는 얻을 (0, 0, 0, 0) 외부 화면의 경계있다. 나는 또한 UIScreenDidConnectNotification에서 (0, 0, 0, 0)을 얻는다. 이 두 경우 모두 윈도우 프레임이 잘못 설정되어 AVPlayerLayer가 AirPlay 장치에 나타나지 않습니다.
한 번만 (0, 0, 0, 0)을 경계로 사용하면 앱을 다시 시작하거나 현재보기 컨트롤러를 다시 초기화 할 때까지 올바른 경계를 다시 얻지 못할 것입니다. AirPlay 장치를 다시 시작하는 것은 도움이되지 않습니다.
외부 화면의 올바른 경계를 가져 오는 방법이 있습니까?