iPhoneX的处理自定义选项卡栏

问题描述 投票:0回答:1

我正在创建自定义标签栏。而且,我正在努力将其正确放置在视图控制器中,以使其能够很好地适合iPhoneX和带有Home按钮的iPhone。

[当我使用SafeAreaLayoutGuide将其锚定在底部时,将得到以下结果:

iPhone X:

iphonex

带主页按钮的iPhone:

iphone_home_button

并且当我使用视图的bottomAnchor

iphonex_clipped

在代码中,我有一个自定义的条形视图,我将其添加为子视图并添加约束以将其固定在底部:

    let tabView = WoofTabBarView(barItems: barItems)
    tabView.backgroundColor = UIColor.white

    tabView.delegate = self
    tabView.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(tabView)
    NSLayoutConstraint.activate([
        tabView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
        tabView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
        tabView.topAnchor.constraint(equalTo: tabContainerView.bottomAnchor),
        tabView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor),
        tabView.heightAnchor.constraint(equalToConstant: 60.0)
    ])

我可以使用一些技巧来修复它,例如添加视图以覆盖底部,或检查设备版本等。但是我希望我tabbarview类足够智能以自行处理它,而不是依靠[C0 ]进行修复。

为了更好地理解代码,您可以在Github上查看存储库:tabbarviewcontroller

ios swift autolayout iphone-x
1个回答
1
投票

尝试以下代码:

将tabView的类替换为WoofTabBarController

WoofTabBarView

let parentView = UIView() parentView.backgroundColor = UIColor.green parentView.translatesAutoresizingMaskIntoConstraints = false let tabView = UIView() parentView.addSubview(tabView) tabView.backgroundColor = UIColor.red tabView.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(parentView) NSLayoutConstraint.activate([ parentView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), parentView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), parentView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor), // Add parentView's Bottom Constraint to View's Bottom tabView.topAnchor.constraint(equalTo: parentView.topAnchor), tabView.heightAnchor.constraint(equalToConstant: 60.0), tabView.leadingAnchor.constraint(equalTo: parentView.leadingAnchor), tabView.trailingAnchor.constraint(equalTo: parentView.trailingAnchor), tabView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor) // Add tabView bottom constraint to Safe Area ]) iPhone X

© www.soinside.com 2019 - 2024. All rights reserved.