質問: Xcode6.4、言語:Swiftで開発を行っています。 Storyboardで縦のみスクロールのページを作っており、ScrollViewの上にUILabelやUIImageをのせています。 UILabelは複数あり、サーバーからAPI経由でLabelのテキストを動的に変更しています。 上から順にAutoLayoutの制約を決めているのですが、条件によって一部のUILabelを表示させたくない場合があり、それのAutoLayout設定がわかりません。 UIImageView ← 絶対に存在する UILabel_1 ← 絶対に存在する UILabel_2 ← 場合によって有無が変わる UILabel_3 ← 絶対に存在する UIImageViewから下に5pxの位置にUILabel_1 UILabel_1から下に5pxの位置にUILabel_2 UILabel_2から下に5pxの位置にUILabel_3 仮にViewが上のようになっており、上から順にAutoLayout制約を設定している場合 UILabel_2がなかった場合レイアウトが崩れてしまいます。 UILabel_2のtextが空の場合はhidden=true、もしくはUILabel_2.text=""にすると、UILabel_2がある場所に余計な隙間ができてしまいます。 UILabel_2のtextが空の場合はUILabel_3の位置を UILabel_1から下に5pxの位置にしたいです。(上につめるイメージ) どのように実装したらよいのでしょうか。 ご教示お願いします。
回答: ラベルとトップスペースの制約をアウトレット接続し、テキストの有無で`constant`の値を変更すればよい ``` @IBOutlet weak var label: UILabel! @IBOutlet weak var topSpaceConstraint: NSLayoutConstraint! ... ... ... // テキストをサーバーから受け取るなどした後 if (label.text!.isEmpty) { topSpaceConstraint.constant = 0 } else { topSpaceConstraint.constant = 5 } ```