Как я могу передать оси X и Y, а также высоту и ширину экрана, чтобы сделать снимок экрана программно в Swift - PullRequest
0 голосов
/ 03 октября 2019

Я добавил UIImageView в ImageView, поэтому я хочу сделать скриншот этих двух изображений, чтобы они выглядели как одно, и любая другая рекомендация также приветствуется.

Я сделал кнопку, которая помогла мне сделать снимок экрана, я добавил ось X и Y,

func takeScreenshot(_ shouldSave: Bool = true) -> UIImage {
    var screenshotImage :UIImage?
    let layer = UIApplication.shared.keyWindow!.layer
    let scale = UIScreen.main.scale
    UIGraphicsBeginImageContextWithOptions(CGSize(width: 20, height: 104), false, scale);
    guard let context = UIGraphicsGetCurrentContext() else {return screenshotImage ?? UIImage(imageLiteralResourceName: "loading")}
    layer.render(in:context)
    screenshotImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    if let image = screenshotImage, shouldSave {
        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
    }
    return screenshotImage ?? UIImage(named: "loading")!
}

Я ожидаю, что сделанный снимок экрана снимает снимок экрана с изображением,Снимок экрана прилагается, введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Поместите эти два представления изображения в UIView, ограничьте их все должным образом. Затем сделайте скриншот этого UIView . Следуйте за этим для скриншота: Как сделать снимок экрана UIView в Swift?

0 голосов
/ 03 октября 2019

Я полагаю, что вы пытаетесь сказать

У вас есть 2 UIImageViews с разными изображениями, а затем вы хотите сделать скриншот этих 2 UIImageViews, чтобы сделать 1 изображение.

Если это так, самый простой способ решить эту проблему - обернуть эти 2 UIImageViews в UIView. Затем конвертируйте этот UIView в UIImage. Таким образом, вы можете получить снимок экрана этих двух UIImageViews в одном.

В случае, если вам нужен код для преобразования UIView в UIImage:

extension UIView {
    func toImage() -> UIImage {
        let renderer = UIGraphicsImageRenderer(bounds: bounds)
        return renderer.image { rendererContext in
            layer.render(in: rendererContext.cgContext)
        }
    }
}

I 'Я не уверен, что это решение вашей проблемы.

...