【问题标题】:Rendering UIImage in CGContext doesn't show image's shadow在 CGContext 中渲染 UIImage 不显示图像的阴影
【发布时间】:2020-05-26 16:13:43
【问题描述】:

我正在尝试从 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!
}

【问题讨论】:

    标签: ios swift uiimageview core-image cgcontext


    【解决方案1】:

    您正在尝试使用图层框架大小创建上下文,但阴影超出了范围。尝试在UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, 0)中增加layer.frame.size

    【讨论】:

      【解决方案2】:

      我会这样做:

      添加一个新的 UIView 并使其成为 UIImageView 的父级,并为其提供足够的 inset 以容纳 UIImageView 的阴影。

      然后使用UIView.drawHierarchy() 将新视图(和子图像视图)渲染到您的私有位图上下文。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-06
        • 1970-01-01
        • 2013-07-06
        • 1970-01-01
        • 1970-01-01
        • 2012-10-31
        • 2016-09-16
        • 2015-06-02
        相关资源
        最近更新 更多