UIGraphicsBeginImageContextWithOptions - 返回的图像有一个不需要的边框

时间:2016-04-21 13:12:59

标签: ios swift

我使用下面的函数渲染Image,但返回的图像底部有一个不需要的边框。

public func renderTextOnView(view: UIView) -> UIImage? {

    UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0)

    view.layer.renderInContext(UIGraphicsGetCurrentContext()!)
    let img = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()
    return img
}

然后我将UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0)更改为UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0),白色边框消失。

虽然问题已得到解决,但我仍然感到困惑,为什么将false更改为true删除边框?背后发生了什么?

enter image description here

2 个答案:

答案 0 :(得分:2)

检查它的语法。是的,

func UIGraphicsBeginImageContextWithOptions(_ size: CGSize, _ opaque: Bool, _ scale: CGFloat).

所以,你正在改变不透明,这就是它发生的原因。有关更多详细信息,请参阅Apple documentation。它是关于不透明的,

  

布尔标志,指示位图是否不透明。如果您知道位图是完全不透明的,请指定YES以忽略Alpha通道并优化位图的存储。指定NO意味着位图必须包含一个alpha通道来处理任何部分透明的像素。

希望这会有所帮助:)

答案 1 :(得分:0)

看起来imageView的图像会导致问题。我尝试了一些其他图像,使用opaque设置为false或true进行测试。无论不透明是什么,它们中的一些都有白色边框,有些看起来很好,即使我将opaque设置为false。(但是,将opaque设置为true确实解决了我的问题)。这很奇怪。

总而言之,设置opaque的值并不能保证工作(但有时可以工作)