上の高さを更新しない自動リサイズ私は、カスタムtableViewCellを持っています。セルが最初のロード
このExtra text
ラベルは非表示に設定されています。ラベルの周りのルールについて:
-(void)setShowExtraText:(BOOL)showExtraText
{
_showExtraText = showExtraText;
if (showExtraText) {
self.textfieldBottomSuperviewConstraint.active = NO;
self.extraText.hidden = NO;
self.textfieldExtraTextConstraint.active = YES;
self.leadingExtraTextConstraint.active = YES;
self.extraTextBottomContraint.active = YES;
}
else{
self.extraText.hidden = YES;
self.textfieldExtraTextConstraint.active = NO;
self.leadingExtraTextConstraint.active = NO;
self.textfieldBottomSuperviewConstraint.active = YES;
self.extraTextBottomContraint.active = NO;
}
}
を有する唯一つのセルが無い隠さExtra text
ラベルを持っており、これはのtableViewの最後の一つでもあります。
問題は、tableViewがセルの高さを読み込む際に問題があることです。また、それを見てDebug View Hierarchy
は、ルールを非アクティブ化するコードを無視していることを示しています。非活性化されたルールはまだ表示されているためです。
スクロールして上にスクロールすると、セルのレイアウトが正しく表示され、余分なテキストがないものと正しく表示されないものが正しく表示されます。
私が追加してみました:
[self setNeedsLayout];
[self layoutIfNeeded];
私はSizeClassesを使用してみました。 (私は前にsizeClassesを使用していませんでした)
私はアイデアが不足していますか?
おかげ
アップデート1
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellWithExtraText" forIndexPath:indexPath];
[cell setShowExtraText:(indexPath.section == LOGIN_SECTION && indexPath.row == REPEAT_PASSWORD_ROW)];
return cell;
}
での更新2
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellWithExtraText" forIndexPath:indexPath];
[cell setShowExtraText:(indexPath.section == LOGIN_SECTION && indexPath.row == REPEAT_PASSWORD_ROW)];
[cell updateConstraintsIfNeeded];
[self.tableView beginUpdates];
[self.tableView endUpdates];
[self.tableView setNeedsLayout];
[self.tableView layoutIfNeeded];
return cell;
}
を得る作られた私はCellForRowAtIndexPathにsetShowExtraText後updateConstraintsIfNeededを追加しましたが、それはまだ同じことをやっています。 私は[cell updateConstraintsIfNeeded]を行う必要があると思います。しかし、私は[tableView updateConstraintsIfNeeded]でも試してみました。どちらも働いていませんでした。ありがとう – xarly
あなたは正しいです、私は自分のコードと私は "setNeedsLayout"と "layoutIfNeeded"私のtableViewで呼び出すすべてのリロードをチェックした。また、セルの高さの変更に関する "beginUpdates"と "endUpdates"。 (私は、AutoLayoutでresizingCellを使用しています) – MCMatan
あなたが言ったように、アップデート2ではやってみましたが、まだ動作していません。ありがとう:) – xarly