iOS8調(diào)用相機報警告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在調(diào)用系統(tǒng)相機拍照時,會有一兩秒的停頓,然后再彈出UIImagePickConroller,IOS7是沒有這個問題的,在百度找了無數(shù)遍都沒能解決這個問題,有說要將imagePickController設置為全局變量,有說要延時0.5秒再presentViewController的,各顯神通,但很遺憾的都沒能解決這個問題,今天特意單獨寫個Demo來研究此問題,終于取得了突破性的進展!
其實根本原因不在于系統(tǒng)拍照控制器上面,而是執(zhí)行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;
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Xcode中iOS應用開發(fā)的一般項目目錄結構和流程簡介
這篇文章主要介紹了Xcode中iOS應用開發(fā)的一般項目目錄結構和流程簡介,包括項目所需的一些平臺路徑如模擬器路徑等的介紹,需要的朋友可以參考下2016-02-02
iOS應用開發(fā)中使用Auto Layout來適配不同屏幕尺寸
這篇文章主要介紹了iOS應用開發(fā)中使用Auto Layout來適配不同屏幕尺寸的方法,根據(jù)Xcode IDE下的實際調(diào)試步驟講解其用法,需要的朋友可以參考下2016-03-03
iOS當多個網(wǎng)絡請求完成后執(zhí)行下一步的方法詳解
在多線程中,有時候我們會遇到一個界面同時有多個網(wǎng)絡請求(比如a,b,c,d四個網(wǎng)絡請求),在這四個個請求結束后,在請求到數(shù)據(jù)去做其他操作(UI更新等),下面這篇文章主要給大家介紹了關于iOS當多個網(wǎng)絡請求完成后執(zhí)行下一步的相關資料,需要的朋友可以參考下。2017-12-12
IOS開發(fā)之tableView點擊行跳轉并帶有“顯示”更多功能
這篇文章給大家介紹通過點擊城市中的tableView跳轉到旅游景點的tableView,下面會有“顯示”更多的功能,代碼簡單易懂,對ios點擊tableview跳轉相關知識感興趣的朋友一起學習吧2016-03-03

