有没有一种方法可以根据某些条件在视图控制器中添加或删除视图,这样就不会占用屏幕上的空间?
我正在寻找安卓系统中类似View.GONE的东西。我知道有[view setHidde:YES],但它只会让它看不见,而不释放空间。
发布于 2019-12-19 17:34:56
你可以这样做...
//needToRemoveView is a boolean flag and based on that you can remove view
if (needToRemoveView) {
[self.viewToRemove removeFromSuperview];
}removeFromSuperview方法实际上将视图从其超级视图中移除,并释放视图占用的内存和屏幕上的空间。
as setHidden:方法实际上并没有删除视图,而是隐藏了视图,视图占用的空间将在那里(在屏幕上和内存中)。
发布于 2019-12-19 22:48:10
你也可以用一种不同的方式来做。
与setHidden一起,您可以禁用视图的约束以释放空间。但请记住,要对禁用的约束进行强引用,否则它们将被释放。
+---------------------------+
| V0: Some view |
+---------------------------+ :
| constraint with priority 750
+---------------------------+ |
| V1: View you want to hide | |
+---------------------------+ | :
| | constraint with priority 1000
+---------------------------+ : : (disable it along with setting isHidden for V1)
| V2: Other view |
+---------------------------+或者,您可以将此方法与删除视图结合使用。
发布于 2019-12-20 08:56:38
对于完成度:
要从视图控制器中删除视图,请执行以下操作:
[self.yourView removeFromSuperview];
[self.yourView release];这是你在过去应该做的事情。但是现在XCode有了ARC (自动引用计数),这意味着除非你明确要求立即发布,否则不再需要发布代码。所以你的代码是:
[self.yourView removeFromSuperview];这意味着,yourView将从视图控制器中删除,但仍然保留在内存中,直到需要该内存,然后iOS将永远自动删除它。
https://stackoverflow.com/questions/59406639
复制相似问题