为啥 UITableView 的 contentLayoutGuide.layoutFrame 总是为零?
Posted
技术标签:
【中文标题】为啥 UITableView 的 contentLayoutGuide.layoutFrame 总是为零?【英文标题】:Why UITableView's contentLayoutGuide.layoutFrame always zero?为什么 UITableView 的 contentLayoutGuide.layoutFrame 总是为零? 【发布时间】:2018-04-07 18:34:25 【问题描述】:从 ios 11 开始,Apple 为UIScrollView
添加了一个contentLayoutGuide
,我想用表格视图的contentLayoutGuide
添加自动布局约束,但我发现contentLayoutGuide
的layoutFrame
始终为 CGRect.zero ,所以它不起作用。
我想用自动布局在滚动视图内容的底部添加一个视图。这不起作用:
label.topAnchor.constraint(equalTo: tableView.contentLayoutGuide.bottomAnchor, constant: 10).isActive = true
【问题讨论】:
【参考方案1】:我想我知道为什么UITableView
的这个值总是为零,可能是因为表格视图的子视图不是由自动布局约束布局的,它们是按框架布局的。
所以只有通过自动布局约束布局的子视图才能给contentLayoutGuide.layoutFrame
一个值。
【讨论】:
【参考方案2】:什么时候添加这个约束?
根据Apple documentation:
在调用其所属视图的 layoutSubviews() 方法时,此属性包含一个有效的 CGRect 值。
希望对你有帮助。
【讨论】:
但是在拥有视图的 layoutSubviews() 方法被调用后它仍然返回零。 frameLayoutGuide 和 safeAreaLayoutGuide 的值是正确的,但 contentLayoutGuide 总是为零以上是关于为啥 UITableView 的 contentLayoutGuide.layoutFrame 总是为零?的主要内容,如果未能解决你的问题,请参考以下文章
我在学习iOS的UITableView,为啥UITableView的最后一块单元格只能显示一半? [关闭]