【iOS开发】WKWebView调用系统相册问题(二)

承接上文,H5页面直接调用手机自带相册、拍照功能时App端开发人员无法获取跳转的系统相册及拍照界面,既然无法获取该控制器,就会导致很多问题,上次讲了iOS8及以下系统无法modal控制器的问题,本次将会讲述如何在获取不到控制器的情况下修改控制器的导航栏。
上文链接:【iOS开发】WKWebView调用系统相册问题(一)
我想对于使用过系统相册的人来说,如何修改导航栏样式并不陌生,可以继承之后重写,可以设置代理修改。但是这些统统不好使了,因为跳转出的控制器完全获取不到,只能用到接下来介绍的方法--黑魔法Swizzling,其实对runtime耳闻已久,平时在开发中很少用到,借此机会记录一下。具体原理是给UIViewControlle创建分类UIViewController+Swizzling ,hook到-viewWillAppear: 方法,在交换的自己重写的方法中改变导航栏的样式,代码如下:
1.自己实现的交换方法

- (void)swizzlingViewWillAppear:(BOOL)animated {
    [self swizzlingViewWillAppear:animated];

    if ([self isMemberOfClass:NSClassFromString(@"PUPhotoPickerHostViewController")] || [self isMemberOfClass:NSClassFromString(@"UIDocumentPickerViewController")]) {
        [self configureRongCloudNavigation];
    }
}

2.重写load方法交换我们所写的方法

+ (void)load {
    [super load];
    //原本的willAppear方法
    Method willAppearOriginal = class_getInstanceMethod([self class], @selector(viewWillAppear:));
    //用于交换的willAppear方法
    Method willAppearNew = class_getInstanceMethod([self class], @selector(swizzlingViewWillAppear:));
    //交换
    if (!class_addMethod([self class], @selector(viewWillAppear:), method_getImplementation(willAppearNew), method_getTypeEncoding(willAppearNew))) {
        method_exchangeImplementations(willAppearOriginal, willAppearNew);
    }
    
}

3.在- (void)configureRongCloudNavigation中设置导航栏样式

    //点击系统相册弹出的控制器
    if ([self isMemberOfClass:NSClassFromString(@"PUPhotoPickerHostViewController")]) {
    }
    
    //点击浏览弹出的控制器
    if ([self isMemberOfClass:NSClassFromString(@"UIDocumentPickerViewController")]) {
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 很少有时间在家里,平时出差比较多,刚好今天休息,与家人共处却发现一个小现象。关于早餐吃什么?这个问题在大多数家庭...
    Maggie_119阅读 1,823评论 0 0
  • 我听过栀子花开 可是花落不如昙花绝美; 青春 是这样的呀。 我曾经不懂世界 吃了核桃却没有听见 敲砸的那道惊心。 ...
    泛指烨阅读 1,423评论 0 1
  • 湿地系列(一) 国庆假期收官之作 感谢各位朋友放假之际还愿意拿出时间来看本人的拙作!也非常感谢照片的拍摄者。 一个...
    平凡的我和我阅读 2,361评论 2 4
  • 如果没听到过你喃呢 如果未窥探到你的艳丽 如果 你我不曾相遇
    霍乱之间阅读 1,891评论 5 3

友情链接更多精彩内容