0

何が起こっているのか、これをどのように処理するのかわかりません。セルにUIViewがあり、IBを使用して制約を設定しましたが、何らかの理由でセルの最後まで伸びています。どうすれば伸びるのを止められるでしょうか。

ここに画像の説明を入力

結果は次のとおりです。

ここに画像の説明を入力

ステッパー コントロールを動的に挿入していますが、ご覧のとおり、UIView はセルの最後まで伸びています。ピン幅を試してみたところ、すべてが完全に台無しになり、UIView も表示されません。

制約のスクリーンショットは次のとおりです。

ここに画像の説明を入力

4

1 に答える 1

0

さて、ここでいくつかの違いを描きましょう。

  • これに対する簡単な方法は、常にセルにステッパーがあることです (UIView はありません)。ステッパーが表示されないセルについては、hiddenYES に設定します。表示されるはずのセルについては、hiddenNO に設定します。それが私がすることです。

  • これを行うプログラマーの方法は、セルに青い UIView がまったくないことです。ステッパーをコードに追加し、その制約をコードに指定して配置します。あなたが言った:

    そのため、座標をハードコードする必要はありません

    ただし、コードに制約を追加することは、座標を「ハードコーディング」することではありません。制約を使用すると、スーパービューからのインセットに関して概念的に位置を記述し、スーパービューのサイズが変更されても、正しい位置に配置されます。したがって、ステッパーとその制約を追加することに哲学的な異議はありません。それをしないのは単に怠惰です。

  • 怠惰だが無駄な方法は、あなたがしていることをすることです。つまり、ペン先に青い UIView をガイドとして追加します。ただし、青い UIView をガイドとして使用したとしても、制約が正しければ、これを正しく行うことができるはずですこれを試したところ、問題を再現できませんでした。青いビューが、Interface Builder に表示されるセルと同じ場所に表示されました。

  • 即時の解決策は、UITableViewCell が描画される nib で Autolayout を使用しないことです。つまり、この nib のファイル インスペクターで [Use autolayout] のチェックを外します。したがって、昔ながらのスプリングとストラット (自動サイズ変更) を使用してサブビューを配置します。

ここに画像の説明を入力

于 2013-04-25T16:59:36.453 に答える