How to correct Tab Bar height issue on iPhone X How to correct Tab Bar height issue on iPhone X xcode xcode

How to correct Tab Bar height issue on iPhone X


On iOS 12.1 I've solved this issue by overriding safeAreaInsets in the UITabBar subclass:

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    }}

For iOS 13.0 onward,

class TabBar: UITabBar {    private var cachedSafeAreaInsets = UIEdgeInsets.zero    let keyWindow = UIApplication.shared.connectedScenes        .filter { $0.activationState == .foregroundActive }        .compactMap { $0 as? UIWindowScene }        .first?.windows        .filter { $0.isKeyWindow }        .first        override var safeAreaInsets: UIEdgeInsets {        if let insets = keyWindow?.safeAreaInsets {            if insets.bottom < bounds.height {                cachedSafeAreaInsets = insets            }        }        return cachedSafeAreaInsets    }}


Create a separate file with the following code:

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    }}


"File inspector"

"File inspector" from right of Xcode storyboard, enable Safe Area guide layout to support your app in iPhone

This post describes it really well.