Newer
Older
Meterage_iOS / Meterage / Utils / DeviceSizeUtil.swift
//
//  DeviceSizeUtil.swift
//  Meterage
//
//  Created by 203 on 2023/2/3.
//

import Foundation
import UIKit

class DeviceSizeUtil {
    public static var shared = DeviceSizeUtil()
    
    func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect {
        let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false
        
        var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20
        var tabBarHeight:CGFloat = isIphoneX ? 34 : 0
        
        //标志导航视图控制器是否存在 默认不存在
        //为什么需要这个?
        //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83
        var noNavigationExists = true
        
        if let navigation = viewController.navigationController {
            noNavigationExists = false
            navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height)
        }
        if let tabBarController = viewController.tabBarController {
            tabBarHeight = noNavigationExists ? tabBarHeight : 0
            tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height)
        }
     
        let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight)
     
        return frame
    }
}