Hon*_*ney 31 uitableview ios autolayout nslayoutconstraint swift
我已经阅读了文档.但是我还不确定什么时候不需要设置它false.在下面的代码中,如果我将其设置为falseI,则根本不会看到标题.如果我把它留下来true,那么一切都会好的.
在View调试层次结构中,它将发出警告" 宽度和位置不明确".
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header = UIView()
header.translatesAutoresizingMaskIntoConstraints = false
header.backgroundColor = .orange
header.heightAnchor.constraint(equalToConstant: 10).isActive = true
return header
}
Run Code Online (Sandbox Code Playgroud)
我想,每当我需要修改代码中的任何东西,我将不得不设置translatesAutoresizingMaskIntoConstraints到false.
也许更正确的说法是你需要删除所有约束然后将其设置为false然后添加你喜欢的东西,在这种情况下你需要为所有4个边添加约束.
但是,如果您需要保留系统提供给您的内容,在这种情况下,tableView将管理其位置和宽度,然后离开true.
是对的吗?
Pau*_*w11 46
translatesAutoresizingMaskIntoConstraints 在以下情况下需要设置为false:
UIView在代码中创建一个基于对象(如果文件启用了autolayout,Storyboard/NIB将为您设置),在这种情况下,并非所有这些都是真的.具体来说,第2点.
返回后,标题视图viewForHeaderInSection将添加到表视图中,并frame根据表视图的当前宽度和返回的高度进行设置heightForHeaderInSection.
您可以将子视图添加到根标题视图(header在代码中),并使用约束来布置相对于标题视图的子视图.
您已经在评论中发现了无法在标题视图中使用autolayout的原因; 在创建视图时,它还不是视图层次结构的一部分,因此您不能将其边缘约束到任何东西.
为了获得动态页眉大小调整,您需要将子视图添加到header视图中,并在这些子视图之间添加约束header.然后,自动布局可以使用内在内容大小header来确定标题视图大小.
由于您没有约束框架header,请不要设置translatesAutoresizingMaskIntoConstraints为false.您需要确保对自动布局的子视图有足够的约束以确定其大小header.
如果子视图的内在内容大小不足,则需要从上到下的连续约束线以及子视图的一些高度约束.
您添加的任何子视图header 都需要translatesAutoresizingMaskIntoConstraints设置为false
您还需要返回的东西从estimatedHeightForHeaderInSection-越接近实际的标题高度的更好-如果你正在使用tableview.sectionHeaderHeight = UITableViewAutomaticDimension
PAN*_*RMA 21
对于以编程方式创建的视图,默认值为true,对于Interface Builder的视图,默认值为false
如果属性为(或设置为)True,则系统会根据视图的框架及其自动调整遮罩自动创建一组约束.如果添加自己的约束,它们不可避免地会与自动生成的约束发生冲突.这会产生不可满足的布局.因此,在以编程方式实例化视图时,请务必将其translatesAutoresizingMaskIntoConstraints属性设置为NO.
| 归档时间: |
|
| 查看次数: |
15451 次 |
| 最近记录: |