我在 UI 设计中使用了带有自动布局的 Storyboard 。基本上在 android 中会有三个不同的属性,比如 Visible 和 Invisible 和消失。
例如:
1) 安卓
mTextView = (TextView) findViewById(R.id.textview);
mTextView.setVisibility(View.GONE);
2) Objective-C
UIView *a = [self.view viewWithTag:2]
I want to process View.GONE...
作为 IOS 我已经从谷歌搜索但我无法找到解决方案。
Best Answer-推荐答案 strong>
辛,
Android 不使用自动布局来计算 View 组件的框架,并且像 CSS(层叠样式表)一样,它使用 View 组件相对于父 View 、边距或其他对等 View 的相对值来计算 View 的位置。
但是在 iOS 中,当你使用自动布局时,你定义了数学表达式的约束,iOS 评估它们以找到各种组件框架的实际值
它有什么意义?
由于自动布局约束是数学表达式,因此您必须为 iOS 提供足够的数据来计算未知值。
让我们考虑一下,
正如您所见,粉红色 View 与绿色 View 的水平间距是固定的,因此 iOS 会根据绿色 View 的 maxX 位置 + 绿色和粉红色 View 之间的水平间距来计算粉红色 View 的 x 位置
现在假设你在绿色 View 上调用 view.GONE 并完全删除绿色 View ,现在 iOS 会感到困惑,因为它不知道粉红色 View 的 x 位置是什么,现在它没有足够的数据来计算 x粉红色 View 的位置
这是否意味着我永远无法在 iOS 中实现 View.GONE ?
你可以!!只是实际上
怎么做??
两种方式:
方式 1
您不能删除 View ,因为这将导致它离开所有其他 View ,这取决于它的框架计算未处理。因此考虑将 View 的宽度和高度约束的常量值设置为“0”
为要隐藏的 View 添加高度和宽度约束,并为高度和宽度约束创建一个 IBOutlet。
现在当你想隐藏时,简单地说,
self.greenViewHeightConstraint.constant = 0
self.greenViewWidthConstraint.constant = 0
self.view.layoutIfNeeded()
是啊!!!现在你有一个宽度和高度为 0 的 View ,我的意思是 View 存在但不存在!
方式 2
但是,您确实使用方法 1 将其删除,对吗?没有。您实际上可以使用方式 2 删除 View
我希望你在这里看到的,现在我知道如果我删除 View1, View 2 无法计算它的 x 位置,所以我创建了一个从 View2 到父左边距的领先约束,并将其优先级设置为高并设置它的常数为 0
现在这个约束不会发挥作用,只要所需的(1000)个约束足以计算值,现在假设您删除 View 1, View 2 的帧不能用必需的约束来计算,因此是高约束开始,它说你的粉红色 View 应该距离 parent 左边距 0 像素
是的 你实现了你想要的,现在你实际上移除了绿色 View 和粉红色 View 仍然没有丢失它的框架
你到底是如何移除绿色 View 的??
这不是问题吗?对不起,我走神了
你可以说self.greenView.removeFromSuperview()
关于iOS for Android View.GONE setVisibility 模式,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/41015078/
|