1
1

More than 3 years have passed since last update.

ViewControllerのviewの上に乗せた別のviewでもsafeAreaLayoutGuideは有効な値か?

Last updated at Posted at 2019-10-30

3周遅れでAutoLayoutを取り入れています。よろしくおねがいします。
今回のテーマは
ViewControllerのviewの上に乗せた別のviewでもsafeAreaLayoutGuideは有効な値か?
です。
知らない人には新しい、知ってる人には懐かしい、そんな記事を目指してます。

結論

有効です。

コード

class ViewController: UIViewController {

    let testView1 = UIView()
    let testView2 = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        view.addSubview(testView1)
        testView1.addSubview(testView2)

        testView1.backgroundColor = .red
        testView2.backgroundColor = .blue

        testView1.translatesAutoresizingMaskIntoConstraints = false
        testView1.widthAnchor.constraint(equalToConstant: 100.0).isActive = true
        testView1.heightAnchor.constraint(equalToConstant: 100.0).isActive = true
        testView1.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        testView1.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

        testView2.translatesAutoresizingMaskIntoConstraints = false
        testView2.widthAnchor.constraint(equalToConstant: 50.0).isActive = true
        testView2.heightAnchor.constraint(equalToConstant: 50.0).isActive = true
        testView2.centerXAnchor.constraint(equalTo: testView1.centerXAnchor).isActive = true

        //↓↓↓これです↓↓↓
        testView2.bottomAnchor.constraint(equalTo: testView1.safeAreaLayoutGuide.bottomAnchor).isActive = true
    }
}

結果

シミュレータで実行したiPhone11の画面の下の部分です。
safe.png
赤は土台のviewの上に乗ってます。
青は赤の上に乗っています。
赤のsafeAreaLayoutGuide.bottomAnchorと青のbottomをイコールにしています。

さいごに

super-sub関係を飛び越えることをよしとするなら直接viewController直下のviewのsafeAreaLayoutGuideにアクセスするのもよいですね。自分はこの辺のスタンダードがわからなかったので、super-sub関係内で出来るかどうかコードを書いて確かめてしまいました。

追加

オートレイアウトをやっているときに出てきた疑問だったのでオートレイアウトの話題のつもりで書いてますけど、よく考えたらsafe areaの話題と言ったほうがいいかもしれません.

1
1
0

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
1
1