文章在不断补充中...
cell自适应高度在iOS9下会报约束错误。cell的子控件的创建添加及约束的添加都写在
init(style: UITableViewCellStyle, reuseIdentifier: String?)
方法中
程序报错:
(
"<SnapKit.LayoutConstraint:0x7fc6b7891cb0@HBHouseDetailAddressCell.swift#44 UIImageView:0x7fc6b78de6a0.top == UITableViewCellContentView:0x7fc6b78d6970.top + 10.0>",
"<SnapKit.LayoutConstraint:0x7fc6b78ddce0@HBHouseDetailAddressCell.swift#47 UIImageView:0x7fc6b78de6a0.bottom == UITableViewCellContentView:0x7fc6b78d6970.bottom - 10.0>",
"<SnapKit.LayoutConstraint:0x7fc6b78e0640@HBHouseDetailAddressCell.swift#52 UIImageView:0x7fc6b7a05ff0.top == UIImageView:0x7fc6b78de6a0.top + 30.0>",
"<SnapKit.LayoutConstraint:0x7fc6b78e0890@HBHouseDetailAddressCell.swift#53 UIImageView:0x7fc6b7a05ff0.height == 22.0>",
"<SnapKit.LayoutConstraint:0x7fc6b78e3030@HBHouseDetailAddressCell.swift#74 UILabel:0x7fc6b78daa50.top == UIImageView:0x7fc6b7a05ff0.bottom + 14.0>",
"<SnapKit.LayoutConstraint:0x7fc6b78e3230@HBHouseDetailAddressCell.swift#75 UILabel:0x7fc6b78daa50.bottom == UIImageView:0x7fc6b78de6a0.bottom - 20.0>",
"<NSLayoutConstraint:0x7fc6b79aa500 UITableViewCellContentView:0x7fc6b78d6970.height == 44>"
)
复制代码
貌似是系统默认了UITableViewCellContentView的高度是44,而我们子布局的约束与之冲突了。经过尝试,只需要指定tableView的estimatedRowHeight
为一个数值就可以了。
UITableViewDelegate
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
复制代码
section的header和footer的高度如果想为0的时候,并不能给0。需要给CGFloat的最小整数 CGFLOAT_MIN
,在swift中的形式是CGFloat.leastNormalMagnitude
grouped类型的tableview,顶部有空白
需要给tableView指定一个tableHeaderView,headerView的高度给一个最小正浮点数
tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: CGFloat.leastNormalMagnitude))
复制代码