safeAreaLayoutGuide не работает для systemLayoutSizeFittingSize - PullRequest
0 голосов
/ 13 марта 2019

Я использую безопасную область в 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

изображение макета iPhone X

Итак, где верхнее и нижнее ограничения?

Нет проблем с адаптером. но когда я хочу получить высоту представления. Это всегда будет возвращать 0.

вот так:

Я хочу рассчитать высоту таблицы в моем представлении:

высота стола

[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

возврат 0

, пожалуйста, помогите мне

1 Ответ

0 голосов
/ 18 марта 2019

Исправьте это следующим образом:

шаг 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();
}];
...