用于自定义tabBar的iOS安全区域布局指南

Par*_*iya 6 objective-c ios safearealayoutguide iphone-x

我有一个基于自定义tabBar的应用程序controller,现在,由于我们有安全的区域布局,我想更改我的应用程序以充分利用iPhone X屏幕.

所以我想解决tabBar的问题,目前不考虑安全区域.

我已经完成了人们发布的大部分解决方案,但这些解决方案主要用于UIViewController.

我当前的tabBar看起来像这样

标签栏截图显示重叠的iPhone X底部滑动指示器

我正在使用RDVTabBar此标签栏是一个实例,UIView我没有使用storyboard或xib,一切都是以编程方式完成的.

解决问题的当前代码

if (@available(iOS 11.0, *)) {
    UILayoutGuide *safe = self.view.safeAreaLayoutGuide;
    self.tabBar.translatesAutoresizingMaskIntoConstraints = NO;

    [NSLayoutConstraint activateConstraints:@[[safe.trailingAnchor constraintEqualToAnchor:self.tabBar.trailingAnchor],
                                              [self.tabBar.leadingAnchor constraintEqualToAnchor:safe.leadingAnchor],
                                              [safe.bottomAnchor constraintEqualToAnchor:self.tabBar.bottomAnchor]]];

    [self.tabBar addConstraint:[NSLayoutConstraint constraintWithItem:self.tabBar
                                                      attribute:NSLayoutAttributeHeight
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:nil
                                                      attribute: NSLayoutAttributeNotAnAttribute
                                                     multiplier:1
                                                       constant:45]];

}
Run Code Online (Sandbox Code Playgroud)

但是这并没有改变任何事情

考虑到我目前的代码结构,我有一个解决方法,这是有效的

CGRect frame = self.tabBar.frame;
frame.origin.y = frame.origin.y - 34;
frame.size.height = frame.size.height + 34;
self.tabBar.frame = frame;
Run Code Online (Sandbox Code Playgroud)

但它不使用安全区域布局指南,如果未来安全区域高度发生变化,那么这将无效; 所以我不愿意使用它.

那么如何使用这个tabBar的安全区域布局指南来解决这个问题呢?