我站在一个新问题面前。我的故事板中有以下布局。
在此布局中,您会看到一个scrollView,其顶部始终具有相同的内容,底部则显示一些框。这些盒子应该是可变的,所以我希望它们中的一些关闭,一些打开。我已经试着说像mapBox.hidden = true或mapBox.removeFromSuperview()。
问题是,如果我这样做,那个盒子是隐藏的,但它的空间总是在那里,因为我认为有限制。
我已经在Android上完成了它,在那里你可以给它们盒子只是一个边缘,当你隐藏时,下面的盒子只有它隐藏在隐藏盒子顶部的任何边缘。
我想要的是打开和关闭某些方框的可能性,所有未隐藏的方框和滚动视图之间的距离始终相同,其内容与其内容一样大。
我希望你能读懂我可能无法理解的英语,并能给我一些提示。
答案 0 :(得分:0)
你可以在这里做些什么:使整个布局成为一个桌面视图。然后,可以将顶部(始终保持不变)添加为表头。 mapbox和标题框都是表格单元格(使用自定义XIB文件)。然后,您可以使用一个数组来表示哪些框以及您要显示的其他单元格,并根据具体情况更新该数组。表视图将根据内容大小调整其滚动视图的大小。
答案 1 :(得分:0)
你可能知道这里的大问题是基本设计。正如@IanRichard所说,这应该使用表格视图来完成。但是,如果没有别的办法,你仍然可以做一些解决方法。
您可以通过这种方式设置约束,以便"不受欢迎的"视图被隐藏。这是textBox和mapBox的一个示例,但可以对所有框使用相同的内容:
你可能有一个约束连接textBox的底部和mapBox的顶部,优先级可能是1000.将此优先级更改为999.然后再添加一个约束连接textBox的TOP和mapBox的TOP 。将优先级设置为1并将常量设置为0.接下来,以与为其他视图元素建立出口连接相同的方式,为这两个约束创建两个出口连接。您将在以后切换优先级时需要它们。
以下是您的商店的样子:
IBOutlet var myConstraintBotTop : NSLayoutConstraint!
IBOutlet var myConstraintTopTop : NSLayoutConstraint!
然后在您的代码中,您可以"关闭您的观点"只需设置适当的约束:
func turnOffMyBox() {
myConstraintBotTop.priority = 1
myConstraintTopTop.priority = 999
}
这里的反转版本是"打开"万一你需要它:
func turnOffMyBox() {
myConstraintBotTop.priority = 999
myConstraintTopTop.priority = 1
}
注意:此方法仅通过重叠框来实现。那些盒子仍然存在。您可能希望隐藏它们以防止用户看到它。