如果子视图(un-)隐藏,请调整视图大小

时间:2014-02-27 10:57:33

标签: ios objective-c uiview uiviewcontroller

我是iOS编程的新手,并且有一部分界面如下所示: enter image description here

我希望它表现得像是,当这个表视图中没有行时,标签和包含tableview的scrollview应该被隐藏,而父UIView(灰色的)应该只包装文本字段(保留边距为课程)。如果将某些行添加到表视图中(通过在文本字段中输入文本),则应显示标签和表视图,并且此父UIView应调整大小以包装它们。当它的高度到达使它变得如此之大以至于它到达底部边缘时,它不应该再扩展。如何实现?

编辑:为了使它更清晰,我知道如何向表视图添加行,如何隐藏元素,我不知道的是如何调整这个父UIView的大小。

编辑2:让某些人更加清楚:当我隐藏子视图时,他们的父视图(灰色区域)具有与之前相同的大小,这与LinearLayout在其子项被隐藏时在Android上的行为类似。我想要的是当它的子节点为GONE而不是HIDDEN时,它的行为就像LinearLayout。

3 个答案:

答案 0 :(得分:2)

使用

label.hidden = YES;

scrollView.hidden = YES;

使用此

答案 1 :(得分:1)

我的简洁回复:

tableview.superview

喔。我会做同样的技巧,但使用uiTextView及其contextSize。我可以搜索代码是否有帮助,但uiviewuitableview没有contextSize属性。

答案 2 :(得分:0)

使用AutoLayout是实现此目的的最佳方法,但由于您没有提及使用它,您可以尝试这样的事情,

相对于标签放置tableview, tableView.frame = CGRectMake(x,label.frame.origin.y + label.frame.size.height,width,height);

当你调用label.hidden = YES时,将标签的高度设为'0'

一旦u为ui元素重置帧,请调用setNeedsDisplay / setNeedsLayout重绘视图。