国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS 對view進行截圖的示例代碼

2019-10-21 18:40:48
字體:
來源:轉載
供稿:網友

本文主要介紹了iOS 對view進行截圖的示例代碼,分享給大家,具體如下:

需要對WKWebView進行截圖,之前用的是下面的方法,高版本的系統是沒有問題的,低版本的卻截到一張白圖

- (UIImage *)convertViewToImage:(UIView *)view{  // 第二個參數表示是否非透明。如果需要顯示半透明效果,需傳NO,否則YES。第三個參數就是屏幕密度了  UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.bounds.size.width, view.bounds.size.height * 0.8),YES,[UIScreen mainScreen].scale);  [view.layer renderInContext:UIGraphicsGetCurrentContext()];  UIImage *image = UIGraphicsGetImageFromCurrentImageContext();  UIGraphicsEndImageContext();  return image;}

查看了之后發現是層級有問題,沒有截到最上面的視圖,于是改為下面的方法就行了

- (UIImage*)captureView:(UIView *)theView frame:(CGRect)frame{  UIGraphicsBeginImageContextWithOptions(CGSizeMake(theView.bounds.size.width, theView.bounds.size.height*0.8), YES, [UIScreen mainScreen].scale);  CGContextRef context = UIGraphicsGetCurrentContext();  UIImage *img;  if([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0){    for(UIView *subview in theView.subviews){      [subview drawViewHierarchyInRect:subview.bounds afterScreenUpdates:YES];    }    img = UIGraphicsGetImageFromCurrentImageContext();  }else{    CGContextSaveGState(context);    [theView.layer renderInContext:context];    img = UIGraphicsGetImageFromCurrentImageContext();  }  UIGraphicsEndImageContext();  return img;}

要注意,frame是不能為空的,而且截的太快的話也會有問題,需要設置afterScreenUpdates為NO,因為設置為YES后,這些方法會等在view update結束在執行,如果在update結束前view被release了,會出現找不到view的問題。另外記得使用UIGraphicsBeginImageContextWithOptions,這樣截取出來的是高清圖。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景谷| 临朐县| 通辽市| 邻水| 会理县| 茶陵县| 循化| 东台市| 昭苏县| 郯城县| 桂林市| 永城市| 海晏县| 宾阳县| 和田市| 阳信县| 栾城县| 巴东县| 雷州市| 桓仁| 绥化市| 沂南县| 泸溪县| 色达县| 津市市| 开封市| 西华县| 惠水县| 清水河县| 龙江县| 陇川县| 原阳县| 丁青县| 酒泉市| 邵阳市| 白玉县| 正定县| 施甸县| 南澳县| 定州市| 思南县|