如何获取 UITabBarController 的 ViewController 的 SafeAreaLayoutGuide?

问题描述

我正在尝试设置视图的 Anchors,以保持在状态栏下方,使用:

UILayoutGuide safeGuide = view.Superview.SafeAreaLayoutGuide;
view.TranslatesAutoresizingMaskIntoConstraints = false;
view.LeadingAnchor.ConstraintEqualTo(safeGuide.LeadingAnchor).Active = true;
view.TrailingAnchor.ConstraintEqualTo(safeGuide.TrailingAnchor).Active = true;
view.TopAnchor.ConstraintEqualTo(safeGuide.TopAnchor).Active = true;
view.BottomAnchor.ConstraintEqualTo(safeGuide.BottomAnchor).Active = true;

但是我的视图被 UITabBarController 底部标签部分遮挡了。

我如何避免这种情况?

解决方法

控制器的根视图总是被状态栏覆盖。

该视图的 SafeAreaLayoutGuide 用于防止添加的子视图扩展到状态栏区域。

无论您使用的是 UITabBarControllerUINavigationController、常规 UIViewController 等,都是如此。