UIView性能:不透明,backgroundColor,clearsContextBeforeDrawing?
我用UIImageView
在白色背景颜色的超级视图内显示不透明的PNG。 什么是最好的performance?
UIImageView
默认值
opaque = NO
, backgroundColor = nil
, clearsContextBeforeDrawing = YES
。
iOS开发库: UIView
类参考
-
UIView类参考:backgroundColor说:“[
nil
]导致透明的背景色。” 如果我将UIView
的opaque
属性设置为YES
,还必须将其backgroundColor
设置为[UIColor clearColor]
,还是不需要多余的代码和处理行? 也就是说,[UIColor clearColor]
被认为是不透明的(不透明)? -
clearsContextBeforeDrawing
的值是否对不透明视图clearsContextBeforeDrawing
?clearsContextBeforeDrawing
中的UIView.h
的注释表明它被opaque视图忽略。但是, UIView类参考:clearsContextBeforeDrawing说:
如果视图的
opaque
属性也设置为YES
,则视图的backgroundColor
属性不能nil
否则可能会出现绘图错误。这是哪个?
类似的问题
- UIView的不透明属性的值为YES,与其值为[UIColor clearColor]的backgroundColor属性冲突?
- cocoa/ iPhone:BackgroundColor和不透明属性
假设您的PNG始终填充整个UIImageView
,您应该使用以下方式获得最佳性能:
opaque = YES
, clearsContextBeforeDrawing = NO
。 在这种模式下, backgroundColor
是不相关的。 像素被简单地replace为新的图像数据。
对于单色背景上的透明PNG,最快的将是:
opaque = YES
, clearsContextBeforeDrawing = YES
,和backgroundColor
匹配任何你需要的。 在这种情况下[UIColor whiteColor]
。
如果将UIView的不透明属性设置为YES,则必须确保您的绘图完全填充视图,而不透明。 所以,你需要设置一个白色的背景颜色(一个清晰的不会工作,因为这不是不透明的)。
我不认为你想改变你的图像视图的默认值,但你应该确保你的PNG没有任何透明度(也就是说,没有alpha通道;你可以在预览的图像检查器中检查;确保它没有“说'有阿尔法')。 我相信如果你给它一个不透明的图像,UIImageView会做正确的事情。
根据背景中的内容,opaque = YES和图像视图的白色背景(防止重新绘制父视图的某些部分)可能会获得更好的性能,但是我不会以这种方式开始。