ios8调用相机报警告: Snapshotting a view that has not been rendered results in an empty snapshot. Ensure you(转)

我这也报了这个警告,但按他的方法并没有起作用,把写到这个地方看是否其他人用的到

错误代码: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这个类,他有一个属性

[Objective-C] 纯文本查看 复制代码

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

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

[Objective-C] 纯文本查看 复制代码

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中定义如下:

[Objective-C] 纯文本查看 复制代码

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,问题解决!!

[Objective-C] 纯文本查看 复制代码

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

    self.modalPresentationStyle=UIModalPresentationOverCurrentContext;

}

 

时间: 2024-10-11 05:03:19

ios8调用相机报警告: Snapshotting a view that has not been rendered results in an empty snapshot. Ensure you(转)的相关文章

Android调用相机拍照获取原始照片

Android调用相机拍照,获取原始照片的解决方案如下:注意要有读取文件的权限,需要添加如下的权限:<uses-permission android:name="android.permission.CAMERA" />按钮点击事件: public void click(View view) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//相机捕捉图片的意图 intent.putExtra(Me

从相册获取图片及调用相机拍照获取图片,最后上传图片到服务器

调用相机拍照获取图片: 跳转到到拍照界面: Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //下面这句指定调用相机拍照后的照片存储的路径 mSzImageFileName = Long.toString(System.currentTimeMillis()) + ".png"; takeIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new F

调用相机,选择图片上传,带预览功能、图片压缩、相机文字设置、

摘要 iOS调用相机,iOS调用相册,保存至应用程序沙盒,高保真压缩图片,并有点击放大预览,再次点击缩回至原大小,带动画效果,附源码下载地址. Xcode版本4.5.1 类库ios6.0 IOS调用相机 图片预览 图片上传 压缩图片 模拟器添加图片 目录[-] 判断是否支持相机,跳转到相机或相册界面 七.保存图片 高保真压缩图片方法 八.实现点击图片预览功能,滑动放大缩小,带动画 ps:模拟器添加图片 源码下载地址: 一.新建工程 二.拖控件,创建映射 三.在.h中加入delegate ? 1

Android调用相机拍摄照片并显示到 ImageView控件中

在前面的一篇文章中曾介绍过简单的开启相机照相功能,详见?Android简单调用相机Camera功能,实现打开照相功能?,这一次就会将前面拍摄的照片显示到ImageView中,形成一个完整的效果 看实例 MainActivity.java package com.example.camera; import java.io.File; import android.app.Activity; import android.content.Intent; import android.graphic

调用相机、相册

没什么好说的,注意一点,就是调用相机的时候需要真机测试,用模拟器的时候要加一个判断语句,不然崩溃 1 #import "RootViewController.h" 2 #import "RootView.h" 3 4 @interface RootViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate> 5 6 @property (nonato

调用相机拍照和图册中的图片并且对图片进行裁剪

在写Android应用的时候,很多时候需要调用自带的相机拍照或者直接从图库中选取图片并且对图片进行裁剪. 下面就讲述如何实现. 1. 调用相机 (1) 使用Intent调用相机,但是在启动Intent之前要设置一个文件路径,用来存储相机照下来的照片. (2)然后使用startActivityForResult启动Intent. (3)然后在protected void onActivityResult(int requestCode, int resultCode, Intent data)函数

Android调用相机实现拍照并裁剪图片,调用手机中的相冊图片并裁剪图片

在 Android应用中,非常多时候我们须要实现上传图片,或者直接调用手机上的拍照功能拍照处理然后直接显示并上传功能,以下将讲述调用相机拍照处理图片然后显示和调用手机相冊中的图片处理然后显示的功能,要想实现上传功能.一般都是上传到数据库中,将imageView中的图片取出来然后存到数据库中就可以. 以下讲述实现的步骤: 1. 调用相冊中的图片裁剪然后显示. 1.1 使用Intent获取从相冊中选择的照片. 1.2 对获取的图片进行裁剪处理.裁剪处理也是使用Intent调用的Android自带的裁

Django urls.py报错: raise TypeError(&#39;view must be a callable or a list/tuple in the case of include()

Django urls.py报错: raise TypeError('view must be a callable or a list/tuple in the case of include() 报错信息 "F:\PyCharm 2016.2.2\bin\runnerw.exe" C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe F:/Django/blogs/manage.py run

AD PCB中两个不同高度器件重叠 软件报警告变绿

这个问题遇到几次了,每次都要在网上搜索解决方法,今天记下来! 在规则里面不检查器件高度这项应该是最简单,也不影响其他规则的方法了! 具体操作: Design - rules - Component Clearance  ,把下图2的位置 勾选去掉! AD PCB中两个不同高度器件重叠 软件报警告变绿