我在自己的UI设计中使用了自动布局的故事板。基本上在android中有三种不同的属性,如Visible和Invisible,并且不见了。
例如:
1)Android
mTextView = (TextView) findViewById(R.id.textview);
mTextView.setVisibility(View.GONE);
2)目标C
UIView *a = [self.view viewWithTag:2]
I want to process View.GONE...
对于IOS中的行为我已经从谷歌搜索但我无法找到解决方案。
答案 0 :(得分:1)
经过一些谷歌搜索,我发现了这个:
View.GONE - 此视图不可见,并且不会占用任何空间进行布局。
View.INVISIBLE - 此视图不可见,但仍会占用空间以进行布局。
它在ios中的等价物是:
View.GONE - 卸载视图。这可以从故事板中完成,如下图所示。您必须取消选中Installed
的复选框
View.INVISIBLE - View.hidden = true;
答案 1 :(得分:1)
信,
Android不使用自动布局来计算视图组件的框架,并且像CSS(层叠样式表)一样,它使用视图组件相对于父视图,边框视图或其他对等视图的相对值来计算视图的位置。
但在iOS中,当你使用自动布局时,你定义了数学表达式的约束,iOS评估它们以找到各种组件的帧的实际值:)
什么意义呢?
由于自动布局约束是数学表达式,因此您必须为iOS提供足够的数据来计算未知值。
让我们考虑一下,
正如您所看到的,粉红色的视图与绿色视图具有固定的水平间距,因此iOS从绿色视图的maxX位置+绿色和粉红色视图之间的水平间距计算粉红色视图的x位置:)
现在假设您在绿色视图上调用view.GONE并完全删除绿色视图,现在iOS将会感到困惑,因为它不知道粉红色视图的x位置是什么,现在它没有足够的数据来计算x粉红色观点的位置:)
这是否意味着我永远无法在iOS中实现View.GONE?
你可以!!但实际上只是:P
如何?? 强>
两种方式:
方式1
您无法移除视图,因为这样会导致视图因为未处理的帧计算而离开所有其他视图。因此,考虑将视图的宽度和高度约束的常量值设置为" 0"
将高度和宽度约束添加到要隐藏的视图中,并根据高度和宽度约束创建IBOutlet。
现在当你想隐藏时,简单地说,
self.greenViewHeightConstraint.constant = 0
self.greenViewWidthConstraint.constant = 0
self.view.layoutIfNeeded()
呀!现在你有一个宽度和高度为0的视图,我的意思是视图存在但不存在!!
方式2
但是,然后,你真的使用方式1删除它吗?不。您实际上可以使用Way 2
删除视图我希望你在这里看到,现在我知道如果我删除View1,视图2无法计算其x位置,所以我创建了一个从View2到Parent左边距的前导约束并将其优先级设置为高并设置它的常数为0:)
现在这个约束不会发挥作用,只要必需的(1000)约束足以计算值,现在假设您删除视图1,视图2的帧不能用所需的约束,因此高约束开始,它表示你的粉红色视图应该是父母左边距的0像素:)
是啊:)你实现了你想要的,现在你实际上删除了绿色视图和粉红色视图仍然没有丢失它的框架:))
你究竟是如何删除绿色视图的?
那不是问题吗?对不起,我被带走了:))
您可以说self.greenView.removeFromSuperview()
答案 2 :(得分:0)
在iOS上,visible
和gone
已完成hidden = NO
和hidden = YES
如果您希望隐身,请将视图alpha
设置为0
。
编辑隐藏视图不会使布局层次结构忽略它,除非它位于堆栈视图中。