Swift:如何拍摄只有一半视图的截图?

时间:2017-09-28 08:49:27

标签: ios screenshot viewcontroller

我试图截取(按下按钮后)只有viewController大小的一半(位于中间)。

我知道我可以截取整个视图的截图:

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

我查看了stackoverflow,但它仍然无效。

例如,这不适用于这些错误消息:

    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的截图?

1 个答案:

答案 0 :(得分:0)

试试This.For Swift

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()