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

文章在不断补充中...

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))
复制代码

转载于:https://juejin.im/post/5c0ddc60f265da6141716640

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值