iOS链接第3方框架二进制文件会导致奇怪的AVFullScreenViewController行为

时间:2019-02-28 17:43:49

标签: ios objective-c xcode frameworks

我正在使用XCode链接其二进制文件,在我的应用程序中实现一个第三方SDK。 SDK的实现效果很好,但是仅通过链接此框架文件(即使我从未实际对其进行任何调用),我的AVFullScreenViewController也不会在播放16:9视频时自动旋转为横向。

我没有使用子类AVFullScreenViewControllervideojs会生成一个本机播放器,当您全屏显示视频时,该播放器会显示典型的AVFullScreenViewController

我知道,很奇怪也很模糊。只是希望有人能给我提示。我尝试过:

static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS7 = @"MPInlineVideoFullscreenViewController";
static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS8 = @"AVFullScreenViewController";

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
- (NSUInteger)supportedInterfaceOrientations
#else
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
#endif
{
    UIWindow* window = [[UIApplication sharedApplication] keyWindow];
    UIViewController* rootvc = [window rootViewController];
    UIViewController* vc1 = [rootvc presentedViewController];

    if ([[rootvc presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS7)] ||
        [[rootvc presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS8)]) {
        [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationLandscapeLeft) forKey:@"orientation"];
        return UIInterfaceOrientationMaskPortraitUpsideDown;
    }
    else {
        [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationPortrait) forKey:@"orientation"];
        return UIInterfaceOrientationMaskPortrait;
    }
}

无济于事。我可以看到AVFullScreenViewController出现并旋转了方向,但是无论如何,视频本身都保持纵向。

应用程序使用Ionic 3构建(可通过cordova访问框架),本机端通过XCode 9.4.1进行编译。在运行iOS 11和12的设备上进行了测试。我不需要针对此特定情况检查额外的设备方向选项并更改Info.plist,但是我已经尝试过了。我也100%确定取消链接此框架二进制文件可使视频正常旋转到横向。

我无法访问框架的源代码,但是我什至都无法想到他们在那里可以做的任何事情都会导致这种情况。

谢谢。

0 个答案:

没有答案