iOS8調(diào)用相機(jī)報(bào)警告Snapshotting a view的解決方法
因?yàn)槲疫@也報(bào)了這個(gè)警告,所以把解決方法寫到這個(gè)地方看是否其他人用的到,具體解決方法:
錯(cuò)誤代碼: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在調(diào)用系統(tǒng)相機(jī)拍照時(shí),會(huì)有一兩秒的停頓,然后再彈出UIImagePickConroller,IOS7是沒有這個(gè)問題的,在百度找了無數(shù)遍都沒能解決這個(gè)問題,有說要將imagePickController設(shè)置為全局變量,有說要延時(shí)0.5秒再presentViewController的,各顯神通,但很遺憾的都沒能解決這個(gè)問題,今天特意單獨(dú)寫個(gè)Demo來研究此問題,終于取得了突破性的進(jìn)展!
其實(shí)根本原因不在于系統(tǒng)拍照控制器上面,而是執(zhí)行presentViewController這個(gè)動(dòng)作本身!我們可以查看下UIViewController這個(gè)類,他有一個(gè)屬性:
@property(nonatomic,assign) UIModalPresentationStyle modalPresentationStyle NS_AVAILABLE_IOS(3_2);
這是一個(gè)枚舉值,在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, };
解決問題的關(guān)鍵部分來了,IOS8多了一個(gè)樣式UIModalPresentationOverCurrentContext,IOS8中presentViewController時(shí)請將控制器的modalPresentationStyle設(shè)置為UIModalPresentationOverCurrentContext,問題解決??!
if([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0) { self.modalPresentationStyle=UIModalPresentationOverCurrentContext; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- iOS開發(fā)技巧之自定義相機(jī)
- iOS自定義相機(jī)實(shí)現(xiàn)拍照、錄制視頻
- iOS框架AVFoundation實(shí)現(xiàn)相機(jī)拍照、錄制視頻
- iOS仿微信相機(jī)拍照、視頻錄制功能
- IOS打開照相機(jī)與本地相冊選擇圖片實(shí)例詳解
- iOS開發(fā)-自定義相機(jī)實(shí)例(仿微信)
- iOS開發(fā)-調(diào)用系統(tǒng)相機(jī)和相冊獲取照片示例
- IOS10 相冊相機(jī)閃退bug解決辦法
- iOS 10 使用相機(jī)相簿閃退的bug修正方法
- IOS打開系統(tǒng)相機(jī)的閃光燈
- iOS 10自定義相機(jī)功能
相關(guān)文章
iOS中解決Xcode9的Log日志無法輸出中文的問題小結(jié)
這篇文章主要介紹了iOS中解決Xcode9的Log日志無法輸出中文的問題小結(jié),需要的朋友可以參考下2017-11-11iOS實(shí)現(xiàn)圖片壓縮的兩種方法及圖片壓縮上傳功能
ios 圖片壓縮有兩種方法,分別是,壓縮圖片質(zhì)量(Quality),壓縮圖片尺寸(Size),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-01-01Xcode中iOS應(yīng)用開發(fā)的一般項(xiàng)目目錄結(jié)構(gòu)和流程簡介
這篇文章主要介紹了Xcode中iOS應(yīng)用開發(fā)的一般項(xiàng)目目錄結(jié)構(gòu)和流程簡介,包括項(xiàng)目所需的一些平臺(tái)路徑如模擬器路徑等的介紹,需要的朋友可以參考下2016-02-02iOS應(yīng)用開發(fā)中使用Auto Layout來適配不同屏幕尺寸
這篇文章主要介紹了iOS應(yīng)用開發(fā)中使用Auto Layout來適配不同屏幕尺寸的方法,根據(jù)Xcode IDE下的實(shí)際調(diào)試步驟講解其用法,需要的朋友可以參考下2016-03-03iOS當(dāng)多個(gè)網(wǎng)絡(luò)請求完成后執(zhí)行下一步的方法詳解
在多線程中,有時(shí)候我們會(huì)遇到一個(gè)界面同時(shí)有多個(gè)網(wǎng)絡(luò)請求(比如a,b,c,d四個(gè)網(wǎng)絡(luò)請求),在這四個(gè)個(gè)請求結(jié)束后,在請求到數(shù)據(jù)去做其他操作(UI更新等),下面這篇文章主要給大家介紹了關(guān)于iOS當(dāng)多個(gè)網(wǎng)絡(luò)請求完成后執(zhí)行下一步的相關(guān)資料,需要的朋友可以參考下。2017-12-12IOS開發(fā)之tableView點(diǎn)擊行跳轉(zhuǎn)并帶有“顯示”更多功能
這篇文章給大家介紹通過點(diǎn)擊城市中的tableView跳轉(zhuǎn)到旅游景點(diǎn)的tableView,下面會(huì)有“顯示”更多的功能,代碼簡單易懂,對ios點(diǎn)擊tableview跳轉(zhuǎn)相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧2016-03-03