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];

    }



}


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




猜你喜欢

转载自blog.csdn.net/sinat_35927740/article/details/80056219