美文网首页
ZFPlayer 全屏播放导致 导航栏上移、列表变窄...

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

作者: 渴_望 | 来源:发表于2022-08-15 14:38 被阅读0次

抄自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

相关文章

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

    抄自github-issues,实测好用 新建UIViewController+ZFPlayerFixSafeAr...

  • IQKeyboardManager导致导航栏上移

    现在为止有俩种解决方案: 改变IQKeyboardManager的版本至~> 3.2.0.3',把控制器的根视图改...

  • 导航

    1 导航栏 1-1 导航栏 = 链接列表 导航栏基本上是一个链接列表,因此使用 和 元素是非常合适的: ...

  • bootstrap中的响应式导航栏

    如下所示的bootstrap样式,定义了一个导航栏,当浏览器宽度变窄时,列表项自动折叠,在右边边会出现一个butt...

  • IQKeyboardManager导航栏上移

    使用IQKeyboardManager来处理项目中的文本框被遮挡的问题是一个很好的选择, 但是也因为这个三方框架自...

  • 谈谈解决IQKeyboard导致导航栏上移的方法

    很简单的问题,网上的回答却是乱七八糟的。别再看网上那些复制粘贴的解决方法了,都是坑。复制粘贴回答别人问题,自己时都...

  • CSS导航条

    1.链接列表导航栏基本上是一个链接列表,因此使用 和 元素是非常合适的 2.垂直导航栏使用a元素来实现 水...

  • iOS H5退出全屏播放视频 导航栏上移

    概述 iOS 项目中一个视图控制器里, 类似今日头条那种的分栏显示很多子控制器. 在第一个子控制器里内嵌了一个H5...

  • iOS个人中心透明导航栏简易实现

    需求 iOS项目个人中心需要导航栏随着内容的上滑,导航栏颜色逐渐变深,到指定距离时,导航栏变为不透明,状态栏颜色变...

  • 列表

    一.列表1.ol有序列表 2.ul无序列表3.自定义列表 二、清除列表前缀 三、导航栏 一般导航栏,a是放在li里面的

网友评论

      本文标题:ZFPlayer 全屏播放导致 导航栏上移、列表变窄...

      本文链接:https://www.haomeiwen.com/subject/nwxlgrtx.html