snapshotViewAfterScreenUpdates:方法在iphone7模擬器上返回一個空白view 在應用中需要用到截圖操作,之前一直用snapshotViewAfterScreenUpdates快速獲取一個截圖,但是在iphone7模擬器上運行的時候直接截出了一個空白頁,看網上有人說ios10之后snapshotViewAfterScreenUpdates這個方法失效,但是在iphone6plus真機上ios10跑過都沒有問題,所以考慮是iphone7的問題;要換成繪圖的方式來獲取截圖 改成如下代碼在iphone7模擬器上也可以正常的截圖了:
- (UIView *)customSnapshotFromView:(UIView *)inputView { UIImage *image = [self imageFromView:inputView]; UIImageView *imgView = [[UIImageView alloc]initWithImage:image]; UIView *snapshot1 = imgView;// UIView *snapshot1 = [inputView snapshotViewAfterScreenUpdates:YES]; snapshot1.layer.masksToBounds = NO; snapshot1.layer.cornerRadius = 0.0; snapshot1.layer.shadowOffset = CGSizeMake(5.0, 5.0); snapshot1.layer.shadowRadius = 1.0; snapshot1.layer.shadowOpacity = 0.4; return snapshot1;}- (UIImage *)imageFromView:(UIView *)snapView {// UIGraphicsBeginImageContext(snapView.frame.size); UIGraphicsBeginImageContextWithOptions(snapView.frame.size, NO, [UIScreen mainScreen].scale); CGContextRef context = UIGraphicsGetCurrentContext(); [snapView.layer renderInContext:context]; UIImage *targetImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return targetImage;}用這個方法UIGraphicsBeginImageContext(snapView.frame.size); 不支持Retina屏幕(截出來的圖片有些失真),所以用UIGraphicsBeginImageContextWithOptions(snapView.frame.size, NO, [UIScreen mainScreen].scale);
UIGraphicsBeginImageContext 和 UIGraphicsBeginImageContextWithOptions的比較
UIGraphicsBeginImageContext 創建一個基于位圖的上下文(context),并將其設置為當前上下文(context)。方法聲明如下:
void UIGraphicsBeginImageContext(CGSize size);
參數size為新創建的位圖上下文的大小。它同時是由UIGraphicsGetImageFromCurrentImageContext函數返回的圖形大小。
該函數的功能同UIGraphicsBeginImageContextWithOptions的功能相同,相當與UIGraphicsBeginImageContextWithOptions的opaque參數為NO,scale因子為1.0。
UIGraphicsBeginImageContextWithOptions 函數原型為:
void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);
size——同UIGraphicsBeginImageContext
opaque—透明開關,如果圖形完全不用透明,設置為YES以優化位圖的存儲。
scale—–縮放因子 iPhone 4是2.0,其他是1.0。雖然這里可以用[UIScreen mainScreen].scale來獲取,但實際上設為0后,系統就會自動設置正確的比例了。
新聞熱點
疑難解答