透明度是邪恶的,在iOS设备上甚至比在更重的机器上更加邪恶。因此,我想先使用view removeFromSuperView
,如果不适用view.hidden=YES
,则作为最后的手段使用view.alpha=0
。但实际上我不知道幕后发生了什么。是否存在差异,尤其是后两者之间的差异?
我有一个UIView animateWithDuration:animations:completion:
场景,如果你在完成块中放入hidden = YES,它将隐藏而不让动画块完成。因此我不得不求助于alpha = 0。
一个人对另一个人的惩罚是什么? 干杯,EP。
答案 0 :(得分:64)
我不确定仍会绘制带有alpha 0.0的视图。检查文档库:
找到了这个答案隐藏视图
要以视觉方式隐藏视图,可以将其隐藏属性设置为YES或将其alpha属性更改为0.0 。隐藏视图不会从系统接收触摸事件。但是,隐藏视图确实参与与视图层次结构关联的自动调整和其他布局操作。因此,隐藏视图通常是从视图层次结构中删除视图的一种方便的替代方法,尤其是如果您计划在不久的某个时间再次显示视图。
那说:
我相信Cocoa Touch对待和低于0.02的alpha也被隐藏起来,因为低于alpha级别它是不可见的,Apple的工程师认为隐形控件不应该是可点击的。
使用alpha值要求图形硬件将对象中的每个像素与下面的所有内容混合在一起。这是计算密集型的。另一方面,隐藏标志是一个开关。如果你打开它,操作系统就知道它根本不必绘制对象。
答案 1 :(得分:3)
设置alpha而不是隐藏属性的一个优点是alpha属性可以更好地播放动画。我有一个动画来显示/隐藏我的导航栏,当我使用alpha属性时,导航栏逐渐消失,而隐藏属性更加突然。
答案 2 :(得分:2)
仍然会绘制alpha为零的内容,但隐藏的视图不会重绘到屏幕上。由于这只会在视图发生变化时发生,因此差异应该是微不足道的。如果您遇到性能问题,我强烈建议使用时间分析器和核心动画工具进行分析。
答案 3 :(得分:0)
是的,两者的行为相同
唯一的区别是,您是否想用动画来隐藏某些东西,例如透明视图。
您可以将其alpha设置为0.5,而不是UIView.animate。使用spring将其aplha设置为0。
其余两个都一样。