私はtableviewセルを持っていて、UIAutomaticDimensions機能を使用して、tableviewセルのサイズを確認できます。セルには3つのラベルとその内容としての画像ビューがあります。今問題は、ラベルとその垂直方向の制約です。ラベルにテキストがない限り、ラベルは表示されません。ラベルの前の位置を上書きして、セルを非常に小さくします。私は、セルの高さが常に別のセルと同じになるように、3つのラベルを常に表示したいと考えています。UILabelsは、テキストがない限り表示されません。tableviewcell autolayout
ラベルにテキストが表示されない場合でも、どのように表示することができますか?
内容の制約を明確にします。
[self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:_prospect_avatar
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeLeading
multiplier:1.0
constant:0.0f]];
[self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:_prospect_avatar
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.contentView
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:100.0f]];
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_prospect_avatar]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(_prospect_avatar)]];
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[_prospect_avatar][_full_name_label]-|"
options:NSLayoutFormatDirectionLeadingToTrailing
metrics:nil
views:NSDictionaryOfVariableBindings(_prospect_avatar,_full_name_label)]];
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[_prospect_avatar][_phone_number_label]-|"
options:NSLayoutFormatDirectionLeadingToTrailing
metrics:nil
views:NSDictionaryOfVariableBindings(_prospect_avatar,_phone_number_label)]];
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[_prospect_avatar][_email_label]-|"
options:NSLayoutFormatDirectionLeadingToTrailing
metrics:nil
views:NSDictionaryOfVariableBindings(_prospect_avatar,_email_label)]];
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[_full_name_label][_email_label][_phone_number_label]-10-|"
options:NSLayoutFormatAlignAllLeading
metrics:nil
views:NSDictionaryOfVariableBindings(_full_name_label,_email_label,_phone_number_label)]];
また、私は追加するのを忘れました。それは、ラベルの実際のデータがnilであれば、各ラベルにスペースを置くだけで、ラベルは互いの上にスタックします。私の問題を解決する正しい方法だとは思わないでください。 – Esko918
すべてのラベルを高さ> = 20、またはすべての制約に合わせて指定してください。それが動作します。 –
ああ、私はそれを完全に忘れていたのですか?少なくとも20ポイント以上であれば、常に20ポイント以上になります。私はそれがそれ自身を自動サイズ調整することを許すべきですか? – Esko918