How to correct Tab Bar height issue on iPhone X

前端 未结 20 3444
长发绾君心
长发绾君心 2020-12-13 13:07

I\'m having an issue with my app when testing for iPhone X. I\'m not sure how to adjust this issue, as well as not make it an issue for non iPhone X sizes. This only seems t

20条回答
  •  失恋的感觉
    2020-12-13 13:54

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

提交回复
热议问题