imageview 的 removeFromSuperview 和 .hidden 之间的区别
Posted
技术标签:
【中文标题】imageview 的 removeFromSuperview 和 .hidden 之间的区别【英文标题】:Difference between removeFromSuperview and .hidden for an imageview 【发布时间】:2014-08-12 19:50:10 【问题描述】:图像视图的removeFromSuperview
和.hidden
property 之间有区别吗?
他们似乎都只是隐藏了图像视图。在某些情况下,我想完全删除 imageview。
【问题讨论】:
这不是特定于UIImageView
。这适用于 UIView
类。
Performance of UIView: removeFromSuperview VS hide的可能重复
【参考方案1】:
removeFromSuperview
-
从其父视图中移除对象,从而在某种意义上“隐藏”它。
删除将视图与其父视图或其他同级视图绑定的任何约束
隐式删除视图的保留计数,如果没有其他对象引用该对象,则可能导致对象被释放
隐藏
-
隐藏视图
视图仍然是布局的一部分
【讨论】:
【参考方案2】:Hidden 使视图隐藏/不可触摸 - 这类似于使 alpha 等于 0。
removeFromSuperview 将视图从其父视图中完全移除。
两者是完全不同的,所以这真的取决于你想要什么。如果您打算暂时隐藏视图,那么隐藏它可能就是您想要的。如果您想删除它并且没有计划再次添加它(至少在视图控制器的生命周期内),那么 removeFromSuperview 更好。
【讨论】:
alpha 等于 0 仍然会在每个 pass 中渲染视图,这与将其设置为隐藏不同,您可以使用 Xcode UI 调试器检查...这是一个很好的工具来告诉尽管 alpa 等于 0,但你画了多少。【参考方案3】:完成从您的视图中删除图像视图。你应该使用removeFromSuperview
。
通过调用此方法,将删除引用您要删除的视图或引用您要删除的视图的子树中的任何视图的任何约束。
尽管如此,隐藏的视图会从其窗口中消失,并且不会接收输入事件。但是,它仍保留在其父视图的子视图列表中,并像往常一样参与自动调整大小。
根据我的经验,我建议删除 removeFromSuperview
的视图。
【讨论】:
以上是关于imageview 的 removeFromSuperview 和 .hidden 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
如何将imageview内的图像移动到imageView的上端?
以另一个 ImageView 的形状裁剪 ImageView