首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >safeAreaLayoutGuide不适用于systemLayoutSizeFittingSize

safeAreaLayoutGuide不适用于systemLayoutSizeFittingSize
EN

Stack Overflow用户
提问于 2019-03-13 10:13:17
回答 1查看 126关注 0票数 0

我在iOS 11中使用的安全区是这样的:

code picture

代码语言:javascript
复制
/** 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中运行

iPhone X layout picture

那么,顶部约束和底部约束在哪里?

在适配器中没有问题。但是当我想获取视图的height.It时,它总是返回0。

就像这样:

我想在我的视图中计算tableview的高度:

tableview height

代码语言:javascript
复制
[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

return 0

请帮帮我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-18 16:23:16

在下面的代码中修复:

步骤1:

代码语言:javascript
复制
_detailTableView.estimatedRowHeight = UITableViewAutomaticDimension;

第2步:

代码语言:javascript
复制
[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();
}];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55133340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档