遇到UITabBar问题

时间:2018-04-20 12:15:09

标签: ios swift constraints uitabbar

我已在File Inspector中尝试过安全区域复选框。但它运作不佳。它再次向我展示了这个问题。你有什么完美的解决方案。

enter image description here

这是包含所有约束的图像。

5 个答案:

答案 0 :(得分:1)

尝试将约束的所有值设置为0,我有同样的问题,图像将位于标签上方或图像不正确, 对于约束,如果要为顶部设置约束,则需要为底部设置相同的约束...

我希望这可以帮助你。

答案 1 :(得分:1)

使用"松散"标签栏。您只能使用UITabBarController提供的标签栏。重构您的体系结构以使用UITabBarController,并且标签栏在iPhone X上看起来正确(并且通常会正确调整大小,例如纵向比iPhone上的横向更高)。

答案 2 :(得分:0)

请删除标签栏的高度限制。因为与其他iPhone设备相比,iPhone X的标签栏默认高度不同。

希望这会对你有所帮助。

答案 3 :(得分:0)

您可以使用此代码更新标签栏的高度

let ApplicationDelegate = UIApplication.shared.delegate as! AppDelegate
DispatchQueue.main.async {
if #available(iOS 11.0, *) {
    if UIDevice().userInterfaceIdiom == .phone, ApplicationDelegate.window!.safeAreaInsets.top > 0 {
        let kTabBarHeight: CGFloat = 49.0/*default tab bar height*/ + ApplicationDelegate.window!.safeAreaInsets.bottom
        self.tabBar.frame = CGRect(x: 0, y: self.view.frame.size.height - kTabBarHeight, width: self.view.frame.size.width, height: kTabBarHeight);
    }
}
}

希望它会对你有所帮助。

答案 4 :(得分:0)

不要在UITabBar控制器中为图像添加任何约束,并为iPhoneX更新UITabbar及其项目的高度。

`override func viewWillLayoutSubviews() {
    var newTabBarFrame = tabBar.frame
    var newTabBarHeight: CGFloat = 60

    if UIDevice.current.iPhoneX{
        newTabBarHeight = 102
    }
    newTabBarFrame.size.height = newTabBarHeight
    newTabBarFrame.origin.y = self.view.frame.size.height - newTabBarHeight
    tabBar.frame = newTabBarFrame
    let numberOfItems = CGFloat(tabBar.items!.count)
    let customColor = UIColor.lightGray.cgColor
    let tabBarItemSize = CGSize(width: tabBar.frame.width / numberOfItems, height: tabBar.frame.height)
    tabBar.selectionIndicatorImage = UIImage.imageWithColor(color: customColor, size: tabBarItemSize).resizableImage(withCapInsets: UIEdgeInsets.zero)
    // remove default border
    tabBar.frame.size.width = self.view.frame.width + 4
    tabBar.frame.origin.x = -2
}`