iOS: 使用自带的图片管理器裁剪图片,iOS 11之后图片会下移20pt的问题解决方案

剪裁部分就不说了, 网上很多,

问题是这样的,在调用系统的裁剪后, 裁剪完成后的图片不是之前选定的区域,会下移20个pt值,这是是iOS 11后的bug,有看到网友分享一个隐藏状态栏,确实可以解决,但是这个隐藏时机一开始摸不着头脑,粗暴的在UIImagePickerController出现时就隐藏那也是OK的, 只是不够优雅, (隐藏状态的方法,这里有传送门)

这儿分享一个自己摸索出来的解决方案,

刚开始的思路是寻找PickerVC中的图片点击方法,在其跳转到裁剪页面时来隐藏,返回时有显示,可惜苹果似乎没有提供点击的api,想想确实也没必要....

不过我想这个方向是对的,虽然也是有点挫,

在看API的时候注意到ImagePickerVC 遵循两个代理 UIImagePickerControllerDelegate 和 UINaviigationControllerDelegate

其中navDelegate 中有这个代理方法


- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

    if ([navigationController.viewControllers count] == 3) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];

    }else {

        [[UIApplication sharedApplication] setStatusBarHidden:NO];

    }

    

if ([viewController isKindOfClass:NSClassFromString(@"PUUIImageViewController")]) {

        [viewController setNeedsStatusBarAppearanceUpdate];

    }




}


在其中来判断是否跳转到了剪裁页面, 适时的隐藏和显示状态栏就OK了, 由于我打印了其中的VC的类名,都为PUUIImageViewController,所以我用判断数量的方法来做, 如果你有更好的方案,欢迎分享哈~

不知为何,打印可能出来问题, 我之后再看打印又是显示三种

"<PUUIAlbumListViewController: 0x7faecc0d5000>",

    "<PUUIPhotosAlbumViewController: 0x7faeca892c00>",

    "<PUUIImageViewController: 0x7faeccc70010>"


所以,用判断类名最合适不过啦~~

最新修改就是: iOS11以上是无法获取那个类名的, 所以还是用判断数量的吧.....


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值