我有一个UIView,它是uitableview的页脚视图。在运行时,用户将文本输入到页脚视图中的uitextview中,该视图应调整为自动布局中具有高度约束的文本内容的大小。
视图中的所有其他对象(标签,图像视图)都有适当的约束来适应文本视图的扩展。
然而,整个页脚视图的高度不会改变大小,并且无法在tableview footerview高度上使用autolayout。
有没有人有解决方案?感谢
答案 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);