2017-10-04 34 views
0

我有屏幕等於SceneView IM的大小尋求捕捉無法採取截圖 - 屏幕大小並返回圖像的問題

let screen = CGRect(x: 0, y: 0, width: sceneView.frame.size.width, height: sceneView.frame.size.height - 60) 


至於尺寸,我招呼着「無法調用初始化爲與類型的參數列表(的CGRect)。我想如何去修復這個錯誤類型CGFloat的?

func Screenshot() 
{ 
     UIGraphicsBeginImageContextWithOptions(UIScreen.main.bounds.size, false, CGFloat(screen)) 
     view.layer.render(in: UIGraphicsGetCurrentContext()!) 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil) 
} 
+0

爲了創建自定義邊界,請使用CGSize。 – jonpeter

回答

1

您已經通過錯誤的參數類型的參數UIGraphicsBeginImageContextWithOptions。最後一個參數的類型爲CGFloat的,即接受浮點值,但您已經傳遞了類型CGRect(屏幕)的值。

UIGraphicsBeginImageContextWithOptions具有以下參數的參數

void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) 


參數

大小
新的位圖的上下文的大小(以磅爲單位)。這表示由UIGraphicsGetImageFromCurrentImageContext函數返回的圖像的大小。要以像素爲單位獲取位圖的大小,必須將寬度和高度值乘以scale參數中的值。

opaque
指示位圖是否不透明的布爾標誌。如果您知道位圖完全不透明,請指定YES忽略Alpha通道並優化位圖的存儲。指定NO意味着位圖必須包含一個Alpha通道來處理任何部分透明的像素。

比例尺
適用於位圖的比例因子。如果您指定的值爲0.0,則縮放係數將設置爲設備主屏幕的縮放係數。

這裏蘋果的文檔此功能:UIGraphicsBeginImageContextWithOptions

解決方案(提示):通過值0.0或1.0,而不是屏幕看。

UIGraphicsBeginImageContextWithOptions(UIScreen.main.bounds.size, false, CGFloat(1.0)) 
+0

再次感謝你,Krunal。對於那些希望自己定製邊界的人來說,使用CGSize就像這樣 - 讓screen = CGSize(width:UIScreen.main.bounds.width,height:UIScreen.main.bounds.height - 60) – jonpeter