iOS8调用相机报警告Snapshotting a view的解决方法

 更新时间:2016年11月04日 15:00:34   作者:沸腾的泪水05314  
这篇文章主要介绍了iOS8调用相机报警告Snapshotting a view……的解决方法 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

因为我这也报了这个警告,所以把解决方法写到这个地方看是否其他人用的到,具体解决方法:

错误代码:Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates.

问题分析:iOS8在调用系统相机拍照时,会有一两秒的停顿,然后再弹出UIImagePickConroller,IOS7是没有这个问题的,在百度找了无数遍都没能解决这个问题,有说要将imagePickController设置为全局变量,有说要延时0.5秒再presentViewController的,各显神通,但很遗憾的都没能解决这个问题,今天特意单独写个Demo来研究此问题,终于取得了突破性的进展!

其实根本原因不在于系统拍照控制器上面,而是执行presentViewController这个动作本身!我们可以查看下UIViewController这个类,他有一个属性:

@property(nonatomic,assign)
 UIModalPresentationStyle modalPresentationStyle NS_AVAILABLE_IOS(3_2);

这是一个枚举值,在iOS7的SDK中,定义如下:

typedefNS_ENUM(NSInteger,
 UIModalPresentationStyle) {

  UIModalPresentationFullScreen
 = 0,

#if
 __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2

  UIModalPresentationPageSheet,

  UIModalPresentationFormSheet,

  UIModalPresentationCurrentContext,

#endif

#if
 __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0

  UIModalPresentationCustom,

  UIModalPresentationNone
 = -1,    

#endif    

};

在iOS8的SDK中定义如下:

typedefNS_ENUM(NSInteger,
 UIModalPresentationStyle) {

    UIModalPresentationFullScreen
 = 0,

    UIModalPresentationPageSheetNS_ENUM_AVAILABLE_IOS(3_2),

    UIModalPresentationFormSheetNS_ENUM_AVAILABLE_IOS(3_2),

    UIModalPresentationCurrentContextNS_ENUM_AVAILABLE_IOS(3_2),

    UIModalPresentationCustomNS_ENUM_AVAILABLE_IOS(7_0),

    UIModalPresentationOverFullScreenNS_ENUM_AVAILABLE_IOS(8_0),

    UIModalPresentationOverCurrentContextNS_ENUM_AVAILABLE_IOS(8_0),

    UIModalPresentationPopoverNS_ENUM_AVAILABLE_IOS(8_0),

    UIModalPresentationNoneNS_ENUM_AVAILABLE_IOS(7_0)
 = -1,     

};

解决问题的关键部分来了,IOS8多了一个样式UIModalPresentationOverCurrentContext,IOS8中presentViewController时请将控制器的modalPresentationStyle设置为UIModalPresentationOverCurrentContext,问题解决!!

if([[[UIDevice
 currentDevice] systemVersion] floatValue]>=8.0) {

  self.modalPresentationStyle=UIModalPresentationOverCurrentContext;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • iOS Label实现文字渐变色效果

    iOS Label实现文字渐变色效果

    文字渐变色可以使整体的效果更上一个档次,最近在开发中就遇到了这个需求,所以整理出来,下面这篇文章主要给大家介绍了关于iOS Label实现文字渐变色效果的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • iOS购物分类模块的实现方案

    iOS购物分类模块的实现方案

    这篇文章主要为大家详细介绍了iOS购物分类模块的实现方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • ios12中遇到的带input弹窗的错位问题的解决方法

    ios12中遇到的带input弹窗的错位问题的解决方法

    这篇文章主要介绍了ios12中遇到的带input弹窗的错位问题的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • iOS实现简单的抽屉效果

    iOS实现简单的抽屉效果

    这篇文章主要为大家详细介绍了iOS实现简单的抽屉效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 关于ios配置微信config出现验签失败的问题解决

    关于ios配置微信config出现验签失败的问题解决

    这篇文章主要介绍了关于ios配置微信config出现验签失败的问题解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • IOS 开发之网络图片轮播图的实现

    IOS 开发之网络图片轮播图的实现

    这篇文章主要介绍了IOS 开发之网络图片轮播图的实现的相关资料,希望通过此文大家能够掌握轮播图的实现,需要的朋友可以参考下
    2017-09-09
  • Flutter GetPageRoute实现嵌套导航学习

    Flutter GetPageRoute实现嵌套导航学习

    这篇文章主要为大家介绍了Flutter GetPageRoute实现嵌套导航的示例学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • iOS开发中CALayer使用的基本教程

    iOS开发中CALayer使用的基本教程

    这篇文章主要介绍了iOS开发中CALayer使用的基本教程,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-11-11
  • IOS绘制动画颜色渐变折线条

    IOS绘制动画颜色渐变折线条

    这篇文章主要介绍了IOS绘制动画颜色渐变折线条的相关资料,需要的朋友可以参考下
    2016-02-02
  • IOS视图控制器的生命周期实例详解

    IOS视图控制器的生命周期实例详解

    这篇文章主要介绍了IOS视图控制器的生命周期实例详解的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论