我已经在iOS上做了一段时间了,但是当谈到动态隐藏/显示元素时,我有点迷失了。 来自Android,我习惯于只能将视图设置为可见性消失,但这在iOS上不存在。
所以我想说我有以下情况:
基本上我想要一个表,但表不应该填满整个视图控制器。相反,它应该留下可选的按钮,多行标签,或者可能两者都在底部(如果可见,这些应该是固定的,而不是滚动)。
解决此问题的一种方法是使用自动布局和修改约束,例如添加零高度约束。但这会使iOS杀死其他约束之一,这将使其难以再次改变。对于标签,我并不总是希望有一个高度约束,因为它可能是多行的,并且应该采用它所需的大小。 也许这里更容易跳过自动布局并修改帧,我不知道。
我的问题是:这里最好的方法是什么? 有没有其他方法可以做到这一点我没有想到,或者我是否必须尝试做我上面描述的事情?
我不是主要寻找代码(代码可以正常),但我对如何完成代码更感兴趣。 我想支持iOS 7。
答案 0 :(得分:1)
这个问题有各种各样的解决方案和基于意见的问题,但是当我不知道该选择什么以及什么是“正确的事情”时,我会面临很多这样的问题。
所以,我认为,这里最好的解决方案是使用autolayout,你需要手动设置标签的高度,但你有几个方法,至少你可以玩它,如果你没有成功问关于它的问题。使用框架,你将面临计算高度的同样问题,对吧?但是使用自动布局时,只需要在需要隐藏消息时将高度,垂直空间设置为0。
您还可以使用优先级低于1000的约束,并且如果您根本不需要它,则从消息(按钮,标签)中删除完全约束。
例如,拍摄布局图像,可以使用子视图制作UIView:button,label。顶部约束连接到UITableView,其他约束连接到sides.Label和按钮将计算视图的高度。这里唯一的问题是标签高度。
答案 1 :(得分:0)
所以在ios中假设这两个对象的背景都是不透明的,只有Heirarchy中最前面的视图才是可见的和可交互的。一个简单的解决方案就是改变你需要的这两个东西的不同框架并确保它们在你的视图后面是heirachy,当你需要它们时,使用view.bringSubviewToFront(mySubview)
和view.pushSubviewToBack(mySubview)
让它再次消失。 View显然是指视图控制器的主视图。