1

removeFromSuperview を介して制約を削除することにより、UILabel を拡張しようとしています。テキスト フィールド 1 が削除されます。しかし、それでも UILabel の幅を広げることはできません。参考までにサンプルコードを添付しておきます。完全にストーリーボードです。

ここに私の ViewDidLoad メソッドがあります:

  self.label1.text = @"label 1";
  self.label2.text = @"label 2";
  self.textfield1.text = @"text field 1";
  self.textfield2.text = @"text field 2";
  [self.textfield1 removeFromSuperview]; 

制約の IBOutlet を持ってコード上で更新したくありません。私はこれを一度ストーリーボードに入れようとしています。

4

2 に答える 2

1

ラベル 2 はテキストフィールド 1 に対する位置に依存していると思います。テキストフィールド 1 を削除すると、ラベル 2 がテキストフィールド 1 のスペースを占めるように拡張する必要があります。ただし、ラベル 2 は (たとえば、テキストフィールドの右側に 20 ピクセル) 1)、テキストフィールド 1 を削除すると、その制約が削除され (テキストフィールド 1 が存在しなくなったため無効になりました!)、スーパービューに対してデフォルトの制約が生成されます。

簡単な解決策がありますが、かなり不完全です。スーパービューから削除する代わりに、テキストフィールド 1 の幅を 0 に設定します。すると、ラベル 2 の位置が変化します。

IBOutletただし、より詳細に制御するには、まだ制約が必要だと思います。

于 2015-05-29T19:00:46.757 に答える