美文网首页
iOS使用自动布局的那些奇奇怪怪的问题

iOS使用自动布局的那些奇奇怪怪的问题

作者: 平凡码农 | 来源:发表于2019-02-20 11:29 被阅读0次

文章在不断补充中...

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))

相关文章

网友评论

      本文标题:iOS使用自动布局的那些奇奇怪怪的问题

      本文链接:https://www.haomeiwen.com/subject/ycgcyqtx.html