ios - safeAreaLayoutGuide 不适用于 systemLayoutSizeFittingSize
问题描述
我在 iOS 11 中使用了这样的安全区域:
/** mainTableView **/
[self.view addSubview:self.mainTableView];
[self.mainTableView makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view.left);
make.right.equalTo(self.view.right);
if (@available(iOS 11.0,*)) {
self.mainTableViewTop = make.top.equalTo(self.view.mas_safeAreaLayoutGuideTop).offset(navHeight).priorityLow();
self.mainTableViewBottom = make.bottom.equalTo(self.view.mas_safeAreaLayoutGuideBottom).offset(0).priorityLow();
}else{
self.mainTableViewTop = make.top.equalTo(self.view.top).offset(navHeight + iAStatusHeight).priorityLow();
self.mainTableViewBottom = make.bottom.equalTo(self.view.bottom).offset(-tabHeight);
}
}];
然后在 iPhone X 中运行
那么,顶部约束和底部约束在哪里?
适配器没有问题。但是当我想获得视图的高度时,它总是返回 0。
像那样 :
我想在我的视图中计算 tableview 的高度:
[self.mainTableView reloadData];
dispatch_async(dispatch_get_main_queue(),^{
if ([self isShowRefreshFooter]) {
CGFloat mainTableHeight = [self.mainTableView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
CGFloat contentHeight = self.mainTableView.contentSize.height;
if (contentHeight < mainTableHeight) {
self.reFreshFooter.hidden = YES;
}else{
self.reFreshFooter.hidden = YES;
}
}
});
但 mainTableHeight 总是返回 0
请给我一些帮助
解决方案
修复如下:
步骤1:
_detailTableView.estimatedRowHeight = UITableViewAutomaticDimension;
第2步:
[bgView addSubview:self.detailTableView];
[self.detailTableView makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(titleLabel.bottom).offset(16).priorityHigh();
make.left.equalTo(bgView.left).offset(0);
make.right.equalTo(bgView.right).offset(0);
make.bottom.equalTo(bgView.bottom).offset(0);
make.height.equalTo(100).priorityHigh();
}];
[self.detailTableView reloadData];
[self.detailTableView layoutIfNeeded];
CGFloat contentHeight = self.detailTableView.contentSize.height;
[self.detailTableView updateConstraints:^(MASConstraintMaker *make) {
make.height.equalTo(contentHeight).priorityHigh();
}];
推荐阅读
- r - 如何在 sublime text3 中将 R 代码发送到 sublime REPL
- python-3.x - 我究竟做错了什么?Python 的回溯错误
- java - 实现多线程让两个类同时运行
- rethinkdb - ReQL:从 Python 字符串列表中过滤文档
- excel - 如何在 VBA 中为可变范围编写求解器“设置单元格”/“通过更改单元格为”/“的值”
- python - 在单个图中使用张量流对图像的不同部分进行分类
- charts - Flutter Charts 如何旋转 X 轴?
- ios - Swift Firebase - 使用 queryOrdered(byChild: ).queryEqual(toValue: ) 时如何获取所有 k/v
- python - 如何使用 Beautifulsoup / Selenium 抓取特定内容
- android-studio - 在需要短信和通话权限的 Play 商店发布 Android 应用时出现问题,有人知道如何解决吗?