2017-09-28 58 views
0

我正在嘗試只有一半viewController大小(位於中間位置)的截圖(按下按鈕後)。Swift:如何截取只有一半的視圖?

我知道我可以把整個視圖的屏幕截圖如下:

UIGraphicsBeginImageContextWithOptions(self.view.frame.size, true, 0.0) 
    self.view.drawHierarchy(in: self.view.frame, afterScreenUpdates: false) 
    let img = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

我已經通過計算器看去,卻仍然無法正常工作。

例如,這不符合這些錯誤信息的工作:

UIGraphicsBeginImageContextWithOptions(CGSize(100, 100), false, 0); 

錯誤:參數標籤 '(_ _ :, :)' 不匹配任何可用的重載

self.view.drawViewHierarchyInRect(CGRect(-50,-5-,view.bounds.size.width,view.bounds.size.height), afterScreenUpdates: true) 

錯誤:參數標籤'(_ :, _ :, _ :, _ :)'與任何可用的過載不匹配

var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); 

如何創建viewController的一半截圖?

+2

'CGRectMake'已被重命名爲'的CGRect(X:,Y:,寬:,高度:)' – Tj3n

+0

感謝。我已經編輯了這個問題,現在我得到了參數標籤'(_ :, _ :, _ :, _ :)'不匹配任何可用重載的錯誤。 – RjC

+0

您將需要編寫變量名稱,如'x:-50,y:-5' .... – Tj3n

回答

0

嘗試This.For斯威夫特

extension UIView { 

    func screenshot() -> UIImage { 
     return UIGraphicsImageRenderer(size: bounds.size).image { _ in 
      drawHierarchy(in: CGRect(origin: .zero, size: CGSize(width: bounds.size.width/2.0, height: bounds.size.height/2.0)), afterScreenUpdates: true) 
     } 
    } 

} 

使用。

let image = view.screenshot()