首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否根据Objc中的条件添加或删除uiview?

是否根据Objc中的条件添加或删除uiview?
EN

Stack Overflow用户
提问于 2019-12-19 17:24:12
回答 4查看 69关注 0票数 0

有没有一种方法可以根据某些条件在视图控制器中添加或删除视图,这样就不会占用屏幕上的空间?

我正在寻找安卓系统中类似View.GONE的东西。我知道有[view setHidde:YES],但它只会让它看不见,而不释放空间。

EN

回答 4

Stack Overflow用户

发布于 2019-12-19 17:34:56

你可以这样做...

代码语言:javascript
复制
//needToRemoveView is a boolean flag and based on that you can remove view
if (needToRemoveView) { 

    [self.viewToRemove removeFromSuperview];

}

removeFromSuperview方法实际上将视图从其超级视图中移除,并释放视图占用的内存和屏幕上的空间。

as setHidden:方法实际上并没有删除视图,而是隐藏了视图,视图占用的空间将在那里(在屏幕上和内存中)。

票数 0
EN

Stack Overflow用户

发布于 2019-12-19 22:48:10

你也可以用一种不同的方式来做。

setHidden一起,您可以禁用视图的约束以释放空间。但请记住,要对禁用的约束进行强引用,否则它们将被释放。

代码语言:javascript
复制
+---------------------------+
| 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            |  
+---------------------------+

或者,您可以将此方法与删除视图结合使用。

票数 0
EN

Stack Overflow用户

发布于 2019-12-20 08:56:38

对于完成度:

要从视图控制器中删除视图,请执行以下操作:

代码语言:javascript
复制
[self.yourView removeFromSuperview];
[self.yourView release];

这是你在过去应该做的事情。但是现在XCode有了ARC (自动引用计数),这意味着除非你明确要求立即发布,否则不再需要发布代码。所以你的代码是:

代码语言:javascript
复制
[self.yourView removeFromSuperview];

这意味着,yourView将从视图控制器中删除,但仍然保留在内存中,直到需要该内存,然后iOS将永远自动删除它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59406639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档