Swift 4.2 Как получить доступ к размерам фрейма макета safeAreaGuide при использовании TabBarController - PullRequest
0 голосов
/ 01 ноября 2018

В дополнение к предыдущему вопросу Я думал, что взломал его, но нет. Я хочу получить доступ к safearealayoutguide для размещения подпредставлений на экранах в контроллере панели вкладок. Первоначально рамка Safeareaguide совпадает с view.frame при первой загрузке. Я думал, что хитрость заключается в том, чтобы получить доступ к override func viewDidLayoutSubviews(), но это работает только в простом контроллере представления, то есть не в виртуальном контроллере внутри контроллера панели вкладок. Безопасные габаритные размеры появляются только после того, как я переключаюсь на другой экран и обратно. Это не идеально. Есть ли способ принудительно обновить безопасные размеры направляющих сразу (или вскоре после viewDidLoad)?

    override func viewDidLoad() {
    super.viewDidLoad()
    setupView()
    print(view.frame)
}

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    print("ViewWillLayout: \(view.safeAreaLayoutGuide.layoutFrame)")
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)
    print("ViewDidAppear \(view.safeAreaLayoutGuide.layoutFrame)")
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    print("ViewDidLayoutSubviews \(view.safeAreaLayoutGuide.layoutFrame)")
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    print("ViewWillAppear \(view.safeAreaLayoutGuide.layoutFrame)")
}

Все методы возвращают безопасную направляющую того же размера, что и view.frame при начальной загрузке.

Первоначально:

  • ViewWillLayout: (0,0, 0,0, 375,0, 667,0)
  • ViewDidLayoutSubviews (0,0, 0,0, 375,0, 667,0)
  • ViewWillLayout: (0,0, 0,0, 375,0, 667,0)
  • ViewDidLayoutSubviews (0.0, 0.0, 375.0, 667.0)

После выбора другого ВК в tabbarcontroller и возврата к исходному ВК:

  • ViewWillLayout: (0,0, 64,0, 375,0, 554,0)
  • ViewDidLayoutSubviews (0.0, 64.0, 375.0, 554.0)
  • ViewDidAppear (0,0, 64,0, 375,0, 554,0)

Предложения, пожалуйста.

Я использую XCode 10, iOS 11.4, платы без историй.

...