У меня есть панель инструментов с кнопкой скриншота. Это прекрасно работает, но я хочу сделать скриншот без панели инструментов. Я пробовал код, который нашел на SO, но изображение огромно, и я не могу сказать, из чего состоит скриншот, так как он выглядит только для скриншота в верхнем левом углу. У меня также есть другая функция в другой части приложения, которая позволяет отправлять снимки экрана по электронной почте. Это огромно, когда оно читается, поэтому я изменяю его размер, прежде чем прикреплять к письму. Это хорошо работает, но я не уверен, как изменить размер и затем обрезать снимок экрана без панели инструментов (выделено красным):
![screenshotImage1](https://i.stack.imgur.com/BZHXH.png)
Я бы хотел сделать скриншот без панели инструментов. Я все еще учусь, поэтому я поиграл с 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)
}
})