UIImagePickerController 进行相机交互后出现UI冻结/App假死状态

原文地址
  前段时间做了个App,由于App相机非主要功能,所以个人直接调用系统提供的UIImagePickerController,想着原本极为常用的一个类应该没啥问题,但是在这次的开发中却花了不少时间在这个类的使用上,所以选择和大家分享一下开发经历以免有人像我一样在这花了过多的时间找原因。

  先给大家描述一下我的问题场景:

1.首先正常使用以下代码创建和使用UIImagePickerController

self.imagePicker = [UIImagePickerController new];
self.imagePicker.delegate = self;
self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:self.imagePicker animated:YES completion:nil];
...

2.正常的打开拍照界面,于是进行一系列手势操作拍照界面,例如放大、聚焦等。

3.紧接着点击拍照界面上的取消,正常返回主界面。

4.接着点击主界面的控件,所有控件都失去响应似的,即冻结状态,程序并没有崩溃,内存也正常,以及视图调试也没多余的视图遮挡,App就是没有任何交互响应。

5.后来科普了很多相关的信息,又对UIImagePickerController的说明文档细看了一遍,结合业界碰到的问题以及自身出现的情况发现UIImagePickerController中有一个属性可能造成影响,于是尝试修改,修改如下:

self.imagePicker.modalPresentationStyle = UIModalPresentationOverFullScreen;

该属性的说明文档地址

主要表达的内容是:

  该属性决定了如何在屏幕上以何种显示模式呈现视图控制器。 在水平紧凑的环境中,模态视图控制器总是全屏显示。 在横向常规环境中,有几种不同的呈现形式。 有关可能的呈现样式的列表及其与可用的过渡样式的兼容性,请参阅UIModalPresentationStyle常量说明。

本人的App也并非界面十分复杂的App,不知道为什么会受其呈现模式影响,到最终我都还没理解为什么更改为‘UIModalPresentationOverFullScreen’值后App界面冻结问题就解决了,但是本人希望有类似情况的开发者可以尝试修改这个属性,看能否解决类似情况。

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,049评论 25 709
  • 视图控制器管理着构成应用程序用户界面中的一部分视图,其负责加载和处理这些视图,管理与这些视图的交互,并协调视图对其...
    渐z阅读 4,380评论 0 1
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,269评论 4 61
  • 这个故事可以说是相当励志了! 男主和女主总是奇葩的相遇和分离,最后却还能在一起,有人说:爱真的需要勇气。或许需要的...
    赵小慢慢慢阅读 504评论 6 6
  • 近一段时间,一些影视名人的婚姻问题一度成为人们关注的焦点。其实,大众百姓又何尝不是如此,恋爱时男女双方信心满满,海...
    乡语阅读 632评论 0 0