

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の位置にしたいです。（上につめるイメージ）

どのように実装したらよいのでしょうか。  
ご教示お願いします。


CC BY-SA 3.0
2015-09-03T09:45:08.917
15196
2015-09-03T10:29:16.987
10996
question
swift xcode xcode6 storyboard autolayout
Xcode6 Swift 動的なアイテムに対してのAutoLayout


ラベルとトップスペースの制約をアウトレット接続し、テキストの有無で`constant`の値を変更すればよい

[code]

    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var topSpaceConstraint: NSLayoutConstraint!
    
    ... ... ...
    
    // テキストをサーバーから受け取るなどした後
    
    if (label.text!.isEmpty) {
      topSpaceConstraint.constant = 0
    } else {
      topSpaceConstraint.constant = 5
    }
    
[/code]


CC BY-SA 3.0
2015-09-03T10:21:08.447
15197
2015-09-03T10:29:16.987
2015-09-03T10:29:16.987
15196
answer