将对象设置为.hidden = true和设置.alpha = 0之间有什么区别?

时间:2016-09-14 14:54:45

标签: ios uiview

只是一般性练习的问题。

将对象设置为.hidden = true和设置.alpha = 0?

之间的区别是什么

哪个效率更高?

另外如果我在视图上有多个对象,我应该隐藏视图吗?或者单独隐藏视图和每个对象?

3 个答案:

答案 0 :(得分:1)

1).hidden效率更高,因为它不仅仅是图形化,它会删除UI事件,从而产生更有效的响应者

2)隐藏容器视图只是更有效,tahtn这样做并循环遍历其元素,它将具有相同的行为。

答案 1 :(得分:1)

如果将视图设置为“隐藏”,操作系统甚至不会尝试绘制它或任何子视图。视图的绘图代码大致是

if (! hidden) {
    for (view* subview in views)
        if (! subview.hidden)
            subview.draw;
    [self drawmyself];
}

所以这比设置alpha快得多,因为图形子系统必须查找异常值alpha = 0,并且可能会查看子视图。

响应者链也是如此,“隐藏”视图根本没有被看到。隐藏更容易处理:如果你设置alpha,你必须记住以前的alpha值,以便你可以恢复它,或者你需要复杂的代码来计算你可能想要再次显示视图的所有地方的新alpha值。

答案 2 :(得分:0)

实际上与“alpha = 0”和“hidden = true”没有区别。

如果您只设置其中任何一个(alpha = 0或hidden = true),视图和视图的子视图将会消失,并且它们也不会响应任何事件。

也许有效率有所不同,但相信我你感觉不到。