0

UITableViewCell サブクラスにサブビューを配置するために AutoLayout を使用しています。ビュー階層は次のように構成されています。

  • トップコンテナビュー
    • 画像表示
    • コメント コンテナー ビュー
      • アバター画像表示
      • いいねボタン
      • ユーザー名ラベル
      • コメントボタン
      • コメント ラベル

画像ビューに画像がある場合、確立した制約は意図したとおりに機能します。ただし、画像がなく、画像ビューの高さが 0 の場合、コメント ビューはそのコンテナーを埋めることができません (つまり、上部がスーパービューの上部と等しくありません)。ビュー A の上部がビュー B の下部に固定され、ビュー B の高さが 0 の場合、ビュー A の origin.y はビュー B の origin.y になると予想されます。しかし、それは起こっていることではありません。AutoLayout の書式設定の何が問題なのか、誰か教えてもらえますか?

    [self.contentContainerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_postImageView(<=200.0)][_commentView]|"
                                                                                  options:0
                                                                                  metrics:nil
                                                                                    views:NSDictionaryOfVariableBindings(_postImageView, _commentView)]];

_commentView のサブビューには他にも制約があり、リクエストに応じて投稿します。

何が起こっているかのショットは次のとおりです。

2 番目のセルの上部と青いコメント コンテナーの上部の間のギャップ

そして、2 番目のセルの目的の効果 (これは、書式文字列を : に変更したときに得られるものです@"|[_commentView]|): 明らかに、これは画像が存在する場合を破ります。

ここに画像の説明を入力

4

1 に答える 1

0

したがって、_commentView には次の形式の制約があります。

@"V:|-(8.0)-[_usernameLabel(30)]-[_contentLabel]|"

_usernameLabel と _contentLabel はどちらも _commentView のサブビューです。これは問題のある制約のようです。最後のパイプを削除すると、_commentView のサイズが期待どおりに変更されます。残念ながら、最後のパイプがなければ、_contentLabel はそのスーパービューの下部に到達するまで拡張されません。しかし、それは別の質問です。

于 2013-08-29T23:06:11.167 に答える