Как / когда iOS определяет safeAreaLayoutguides и layoutMargins?

Работая над пользовательским переходом UINavigationController, я заметил кое-что интересное: я создаю копию UIView в моем fromController и добавляю ее в transitionContext для анимации, но он имеет другое значение для safeLayoutGuides/Insets, чем оригинал в fromController. Тем не менее, он имеет аналогичные поля, различающиеся только количеством safeAreaInsets:

if let fromController = transitionContext.viewController(forKey: .from) as? WTPTransformingHeaderController
{
    // Make a copy of the from header
    let header_FromCopy = fromController.view_Header.copy() as! WTPTransformingHeaderView

    // fromController.view_Header.safeAreaLayoutInsets = UIEdgeInsets(top: 20.0, left: 0.0, bottom: 0.0, right: 0.0)
    // fromController.view_Header.layoutMargins = UIEdgeInsets(top: 48.0, left: 8.0, bottom: 8.0, right: 8.0)

    // header_FromCopy.safeAreaLayoutInsets = .zero
    // header_FromCopy.layoutMargins = UIEdgeInsets(top: 28.0, left: 8.0, bottom: 8.0, right: 8.0)
}

Как именно UIView устанавливает эти свойства? На каком этапе жизненного цикла представления? Я предполагаю, что это определено иерархией представления так или иначе, но я не могу найти особенности.

0 ответов

Другие вопросы по тегам