LoginSignup
61
43

More than 1 year has passed since last update.

UIViewを非表示にしたときに、位置を縦詰めする方法

Last updated at Posted at 2015-09-09

2016/7/8追記: 現在なら、UIStackView(iOS9.0未満の場合は、FDStackView)を使えばとても簡単に実現できます。
UIStackViewなら、非表示時にアニメーションをすることも簡単にできます。

Problem

  • 表示/非表示を切り替えられるViewがあり、非表示にしたときは空間を開けないように位置を縦詰めしたい。

Solution

  • Viewを非表示にするときはAutoLayoutのHeightの制約の高さを0にし、表示するときは高さを元に戻すように実装します。

実装例

  @IBOutlet weak var label: UILabel!
  @IBOutlet weak var labelHeightConstraint: NSLayoutConstraint! // Storyboardのlabelのheightの制約と関連づける

  // 表示/非表示を切り替え
  func setVisible(visible: Bool) {
    if visible {
      label.hidden = false
      labelHeightConstraint.constant = 44
    } else {
      label.hidden = true
      labelHeightConstraint.constant = 0
    }
  }
61
43
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
43