ZFPlayer 全屏播放导致 导航栏上移、列表变窄...

抄自github-issues,实测好用 新建UIViewController+ZFPlayerFixSafeArea 文件,复制代码,运行~~~

#import <objc/message.h>

#import <ZFPlayer/ZFPlayerController.h>

BOOL zf_isFullscreenOfFixSafeArea = NO;

API_AVAILABLE(ios(13.0)) @protocol _UIViewControllerPrivateMethodsProtocol <NSObject>

- (void)_setContentOverlayInsets:(UIEdgeInsets)insets andLeftMargin:(CGFloat)leftMargin rightMargin:(CGFloat)rightMargin;

@end


@implementationUIViewController (ZFPlayerFixSafeArea)

- (void)zf_setContentOverlayInsets:(UIEdgeInsets)insetsandLeftMargin:(CGFloat)leftMarginrightMargin:(CGFloat)rightMargin {

    if (zf_isFullscreenOfFixSafeArea == NO) {

        [self zf_setContentOverlayInsets:insets andLeftMargin:leftMargin rightMargin:rightMargin];

    }

}

@end

API_AVAILABLE(ios(13.0))@implementationZFOrientationObserver (ZFPlayerFixSafeArea)

+ (void)initialize {

    if(@available(iOS13.0, *) ) {

        staticdispatch_once_tonceToken;

        dispatch_once(&onceToken, ^{

            Classcls =UIViewController.class;

            SELoriginalSelector =@selector(_setContentOverlayInsets:andLeftMargin:rightMargin:);

            SELswizzledSelector =@selector(zf_setContentOverlayInsets:andLeftMargin:rightMargin:);


            MethodoriginalMethod =class_getInstanceMethod(cls, originalSelector);

            MethodswizzledMethod =class_getInstanceMethod(cls, swizzledSelector);

            method_exchangeImplementations(originalMethod, swizzledMethod);


            Classpc_class =ZFPlayerController.class;

            SELpc_originalSelector =@selector(enterFullScreen:animated:completion:);

#pragma clang diagnostic push

#pragma clang diagnostic ignored"-Wundeclared-selector"

            SELpc_swizzledSelector =@selector(zf_enterFullScreen:animated:completion:);

#pragma clang diagnostic pop

            Methodpc_originalMethod =class_getInstanceMethod(pc_class, pc_originalSelector);

            Methodpc_swizzledMethod =class_getInstanceMethod(pc_class, pc_swizzledSelector);

            method_exchangeImplementations(pc_originalMethod, pc_swizzledMethod);

        });

    }

}

@end


API_AVAILABLE(ios(13.0))@implementationZFPlayerController(ZFPlayerFixSafeArea)

- (void)zf_enterFullScreen:(BOOL)fullScreenanimated:(BOOL)animatedcompletion:(void(^_Nullable)(void))completion {

    zf_isFullscreenOfFixSafeArea = fullScreen;

    [selfzf_enterFullScreen:fullScreenanimated:animatedcompletion:completion];

}

@end

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容