UIView的opaque属性值是YES,与backgroundColor属性冲突,值为[UIColor clearColor]吗?

Emi*_*ily 11 uikit uiview ios

比如代码:

view.opaque = YES;
Run Code Online (Sandbox Code Playgroud)

view.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)

谁能解释一下这个呢?

编辑:

如文件所示:

尽可能将视图声明为不透明

UIKit使用每个视图的opaque属性来确定视图是否可以优化合成操作.对于自定义视图,将此属性的值设置为YES会告诉UIKit它不需要在视图后面呈现任何内容.较少的渲染可以提高绘图代码的性能,并且通常会受到鼓励.当然,如果将opaque属性设置为YES,则视图必须使用完全不透明的内容完全填充其边界矩形.

opaque属性用于确定视图是否可以优化合成操作.

所以问题是:

如果我设定view.opaque = YES并且view.backgroundColor = [UIColor clearColor],前者提高了性能,后者怎么样?

Dav*_*dge 8

opaque标志用作渲染的优化.如果在视图不应该是不透明的情况下将其设置为YES,那么如果您确实希望通过视图显示内容,则可能会出现意外渲染.

我的理解是有时会检查opaque标志以查看是否应该检查alpha值.


Jac*_*ies 2

不,不应该。它应该表现得很清楚。如果这有意义的话,透明的颜色是完全不透明的。如果你改变它的阿尔法,它不会显示黑色或白色或其他任何东西。一切都会清楚的。