【发布时间】:2019-05-17 10:46:48
【问题描述】:
我有一个带有屏幕截图按钮的工具栏。这很好用,但我想在没有工具栏的情况下截取屏幕截图。我已经尝试过在 SO 上找到的代码,但是图像很大,我不知道屏幕截图是什么,因为它似乎只截取了左上角。我在应用程序的不同部分还有另一个功能,可让您通过电子邮件发送屏幕截图。当它被读入时,它是巨大的,所以我在附加到电子邮件之前调整它的大小。这很好用,但我不确定如何调整大小,然后在没有工具栏的情况下裁剪屏幕截图(以红色突出显示):
我想截取不带工具栏的屏幕截图。我还在学习,所以我玩过 UIImage 和 CGRect,但没有成功。
let imageScreenshot = view.snapshot()
let screenWidth = self.view.frame.size.width
let screenHeight = self.view.frame.size.height
let cropSize = CGRect(x: 0.0, y: 0.0, width: screenWidth, height: screenHeight * 0.75)
let imageHolder = imageScreenshot.cgImage?.cropping(to: cropSize)
let screenshotOfWindow = UIImage(cgImage: imageHolder!)
extension UIView {
func snapshot() -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, true, UIScreen.main.scale)
self.layer.render(in: UIGraphicsGetCurrentContext()!)
let img = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return img
}
}
建议用webkit截图后:
webView!.takeSnapshot(with: nil, completionHandler: { (image, error) in
self.screenshotOfWindow = image
self.showScreenshotEffect()
})
实际上,在此更改后,它似乎并没有保存到 Core Data,但已拍摄快照。
此代码命中第一行并绕过所有其他代码:
webView.takeSnapshot(with: nil, completionHandler: { (image,error) in
if let image = image {
DispatchQueue.main.async {
self.webView.isHidden = true
self.screenshotOfWindow = image
}
} else {
print (error?.localizedDescription as Any)
}
})
【问题讨论】:
-
显示你尝试过的代码
-
你在使用 webview 吗?
-
我正在使用 webview。
标签: swift uiview screenshot