如何纠正iPhone X上的标签栏高度问题

ice*_*omo 32 xcode ios uistoryboard swift iphone-x

在测试iPhone X时,我的应用程序出现了问题.我不确定如何调整此问题,以及不使用非iPhone X尺寸的问题.这似乎只是iPhone X模拟器上的一个问题.

在此输入图像描述

在此输入图像描述

And*_*rey 15

iOS 12.1上,我通过覆盖UITabBar子类中的safeAreaInsets解决了这个问题:

class TabBar: UITabBar {
    private var cachedSafeAreaInsets = UIEdgeInsets.zero

    override var safeAreaInsets: UIEdgeInsets {
        let insets = super.safeAreaInsets

        if insets.bottom < bounds.height {
            cachedSafeAreaInsets = insets
        }

        return cachedSafeAreaInsets
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 13

使用以下代码创建单独的文件:

extension UITabBar {
    override open func sizeThatFits(_ size: CGSize) -> CGSize {
        super.sizeThatFits(size)
        guard let window = UIApplication.shared.keyWindow else {
            return super.sizeThatFits(size)
        }
        var sizeThatFits = super.sizeThatFits(size)
        sizeThatFits.height = window.safeAreaInsets.bottom + 40
        return sizeThatFits
    }
}
Run Code Online (Sandbox Code Playgroud)


Dip*_*cha 10

XCode故事板右侧的"文件检查器",启用安全区域指南布局以支持您在iPhone中的应用程序

这篇文章描述的非常好.

  • 这被检查,我的约束设置为安全区域,但我仍然在底部得到奇怪的差距. (8认同)
  • @MartijnPieters这两个问题都是不同的概念,但指向相同的解决方案. (2认同)
  • 仅仅因为答案重复并不一定会使问题重复。我发现这个问题有用且独特。 (2认同)

小智 5

对于iOS 11.3,这对我有用:

func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    tabBar.invalidateIntrinsicContentSize()
}
Run Code Online (Sandbox Code Playgroud)