如何在iphone屏幕方向改变时收到通知

时间:2017-04-27 08:16:30

标签: macos avfoundation record

我正在编写一个OSX(Mac)应用程序来使用像QTPlayer这样的AVfoundation来录制iPhone屏幕。

但是,当我的手机屏幕方向改变时,我不知道如何获得通知。我试图寻求代表的解决方案,通知,但什么都没有。而且,我无法获得iPhone的屏幕尺寸。

我使用了AVCaptureInput AVCaptureSession AVCaptureDevice等。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

它已经解决了。 您需要添加一个名为 AVCaptureInputPortFormatDescriptionDidChangeNotification 的通知,如下所示:

NSNotificationCenter *notiCenter = [NSNotificationCenter defaultCenter];
id inputPortFormatDescriptionOberserver = [notiCenter addObserverForName:AVCaptureInputPortFormatDescriptionDidChangeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
        didGetVideoDimensions = YES;
        [wself.screenRecorderDelegate captureInputPortDidChanged];
        NSLog(@"AVCaptureInputPortFormatDescriptionDidChangeNotification");
    }];

您可以获得如下屏幕尺寸:

- (CGSize)optedDeviceSize{
CGSize size = CGSizeZero;
AVCaptureInputPort *port = self.videoDeviceInput.ports.firstObject;
if (port) {
    CMVideoDimensions videoDimensions = CMVideoFormatDescriptionGetDimensions(port.formatDescription);
    size = CGSizeMake(videoDimensions.width, videoDimensions.height);
}
return size;

}