Визуализация UIImage в CGContext не показывает тень изображения - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь получить изображение из UIImageView, включая его свойства слоя (тень и граница); однако я не вижу тени на полученном изображении. Вышеупомянутое изображение - это мой «imageView», а ниже - «previewImageView». Обратите внимание, что тень отсутствует в previewImageView, но граница есть.

Вот мой код:

func convertButtonAction() {
    let img = imageFromLayer(layer: imageView.layer)
    previewImageView.image = img
}

func imageFromLayer(layer: CALayer) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, 0)
    layer.render(in: UIGraphicsGetCurrentContext()!)
    let outputImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return outputImage!
}

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Я бы сделал это следующим образом:

Добавьте новый UIView и сделайте его родительским для вашего UIImageView и предоставьте ему достаточно вставки, чтобы удерживать тень UIImageView.

Затем используйте UIView.drawHierarchy () для рендеринга нового представления (и дочернего изображения) в ваш частный контекст растрового изображения.

0 голосов
/ 26 мая 2020

Вы пытаетесь создать контекст с размером кадра слоя, но тень выходит за границы. Попробуйте увеличить layer.frame.size в UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, 0)

...