UIView性能:opaque,backgroundColor,clearsContextBeforeDrawing?

ma1*_*w28 11 iphone performance uikit uiview ios

我正在UIImageView使用白色背景颜色的超视图内部显示不透明的PNG .性能最好的是什么?

UIImageView 默认

opaque = NO,backgroundColor = nil,clearsContextBeforeDrawing = YES.

iOS开发者库:UIView类参考

  1. UIView类参考:backgroundColor说,"[ nil]产生透明的背景颜色." 如果我设置一个UIView小号opaque属性YES,要我还设置了backgroundColor[UIColor clearColor],或者是代码及处理额外的行不必要的?即,被[UIColor clearColor]认为是不透明的(不透明)?

  2. clearsContextBeforeDrawing不透明视图的物质价值?

    您的评论clearsContextBeforeDrawingUIView.h说,它是不透明的意见被忽略.

    但是,UIView类参考:clearsContextBeforeDrawing说:

    如果视图的opaque属性也设置为YES,则视图的属性backgroundColor不得为nil或可能出现绘制错误.

    这是什么?

类似的问题

Gil*_*Gil 7

假设你的PNG总是填满整个UIImageView,你应该使用以下方法获得最佳性能:

opaque = YES,clearsContextBeforeDrawing = NO.在这种模式下backgroundColor是无关紧要的.像素被简单地替换为新的图像数据.

对于单色背景上的透明PNG,最快的将是:

opaque = YES,clearsContextBeforeDrawing = YESbackgroundColor匹配您需要的任何东西.在这种情况下[UIColor whiteColor].


Jes*_*sak 3

如果将 UIView 的 opaque 属性设置为 YES,则必须确保您的绘图完全填充视图且不透明。因此,您需要设置白色背景颜色(透明的背景颜色不起作用,因为它不是不透明的)。

我认为您不想更改图像视图的默认设置,但您应该确保您的 PNG 没有任何透明度(即没有 Alpha 通道;您可以在预览的图像检查器中检查这一点;确保它没有)不要说“有阿尔法”。)。我相信如果你给 UIImageView 一个不透明的图像,它会做正确的事情。

根据背景中的内容,使用 opaque = YES 和图像视图的白色背景可能会获得更好的性能(以防止重绘父视图的部分),但我不会以这种方式开始。