ulayview footerview的运行时扩展使用autolayout

时间:2014-03-27 17:09:17

标签: ios uitableview

我有一个UIView,它是uitableview的页脚视图。在运行时,用户将文本输入到页脚视图中的uitextview中,该视图应调整为自动布局中具有高度约束的文本内容的大小。

视图中的所有其他对象(标签,图像视图)都有适当的约束来适应文本视图的扩展。

然而,整个页脚视图的高度不会改变大小,并且无法在tableview footerview高度上使用autolayout。

有没有人有解决方案?感谢

4 个答案:

答案 0 :(得分:2)

Haven还没有找到一个真实,优雅的解决方案,但是我推迟使用解决方法来解决这个问题: 将用作页脚的视图框架设置为尽可能大。在我的情况下,这意味着给它大约60px的备用垂直空间。由于它是页脚,并且没有任何内容可以重新定位,因此用户不会受到变通方的影响。 页脚视图的内容固定在顶部,并有足够的空间在需要时展开。 对于记录:我的视图是从nib文件加载的。 虽然从理论上讲,在界面构建器中给出顶级视图的大小只是为了设计时,并且运行时大小应该根据约束和得到的内在大小来计算,对于这个特定情况我发现高度保持不变。在IB。

答案 1 :(得分:1)

我们可以通过以下代码更改页脚视图运行时的高度:

func methodToChangeTableViewFooterHeight()
{
    var footerView:UIView = self._tableView.tableFooterView! as UIView
    var frame:CGRect = footerView.frame
    frame.size.height = self.heightCollectionCS.constant + 10
    footerView.frame = frame
    self._tableView.tableFooterView! = footerView
}

这里,self.heightCollectionCS.constant是我们的Collection View的高度约束。 我们可以在那个地方使用文字内容高度。

答案 2 :(得分:0)

每次页脚高度更改时,您可以尝试再次设置页脚视图,以通知表格它应该更改页脚高度。或者使用插页。从页脚视图中:

SetNeedsLayout()
LayoutIfNeeded()
ownertable.TableFooterView = this

答案 3 :(得分:0)

很抱歉,很久以前就误读了这个问题。您可以直接通过tableview的属性tableFooterView访问页脚。

您可以在xib或viewDidLoad:中创建默认页脚。一旦您需要增加页脚的大小,您可以从该属性中提取UIView并在必要时编辑其框架以使其更大。

因此,请确保为tableFooterView分配了UIView,因为默认情况下它为零。要使身高更高,您可以使用self.tableView.tableFooterView.frame = CGRectMake(whatever rect you need);