iOS

iOS iPhoneX 适配

2018-10-03  本文已影响573人  路飞_Luck
一 iPhoneX各个视图值
1.简单定义一下IPoneX
_isIphoneX = [UIScreen mainScreen].bounds.size.height == 812 ? YES : NO;
2.了解IPhoneX各个视图的高度
image.png

一般比较常用的说法导航栏高度(状态栏+导航栏),tabBar高度(tabBar + 安全距离)

1.导航栏高度 88,非iPoneX手机为64
2.状态栏高度44,非iPoneX手机为20
3.tabar高度83,非iPhoneX手机为49

代码如下

@interface AppEnvs : NSObject
#pragma mark - 相关变量值
@property(nonatomic, assign) int screenWidth;   // 屏幕宽度
@property(nonatomic, assign) int screenHeight;  // 屏幕高度
@property(nonatomic, assign) int statusBarHeight; // 系统状态栏高度
@property(nonatomic, assign) int tabBarHeight; // 系统TabBar高度 + 安全距离
@property(nonatomic, assign) int safeAreaBottomHeight; //iPhone X 安全距离
@property(nonatomic, assign) int navBarHeight;  // 导航栏高度
@property(nonatomic, assign) int navHeight; // 状态栏 + 导航栏
@property(nonatomic, assign) int screenHeightTabBar; // 屏幕高度 - 状态栏 - 导航栏 - tabBar - 安全距离
@property(nonatomic, assign) int screenHeightTabBarNoNavBar;    // 屏高 - 状态栏高度 - tabBar - 安全距离
@property(nonatomic, assign) int screenHeightNoNavBar;  // 屏高 - 状态栏 - 导航栏 - 安全距离
@property(nonatomic, assign) int screenHeightNoStatusBar;   // 屏幕高度 - 状态栏

#pragma mark - 机型
@property(nonatomic, assign) bool isIPhone4;
@property(nonatomic, assign) bool isIPhone5;
@property(nonatomic, assign) bool isIPhone6;
@property(nonatomic, assign) bool isIPhone6Plus;
@property(nonatomic, assign) bool isIPhoneBig;
@property(nonatomic, assign) bool isIphoneX;

@end
@implementation AppEnvs
- (instancetype)init {
    self = [super init];
    if (self) {
        _screenWidth = [UIScreen mainScreen].bounds.size.width;
        _screenHeight = [UIScreen mainScreen].bounds.size.height;
        _statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
        _safeAreaBottomHeight = _screenHeight == 812.0 ? 34 : 0;
        _navBarHeight = 44;
        
        _navHeight = _navBarHeight + _statusBarHeight;
        _tabBarHeight = ([[UIApplication sharedApplication] statusBarFrame].size.height > 20 ? 83 : 49);
        _screenHeightNoNavBar = _screenHeight - _navHeight - _safeAreaBottomHeight;
        _screenHeightTabBar = _screenHeight - _navHeight - _tabBarHeight;
        _screenHeightTabBarNoNavBar = _screenHeight - _statusBarHeight - _tabBarHeight;
        _screenHeightNoStatusBar = _screenHeight - _statusBarHeight;
        
        // 机型
        if (_screenHeight == 812) {
            _isIphoneX = YES;
        } else if (_screenWidth > 370 && _screenWidth < 400 && _screenHeight != 812) {
            _isIPhone6 = YES;
        } else if (_screenWidth > 400 && _screenHeight != 812) {
            _isIPhone6Plus = YES;
        } else if (_screenWidth == 320 && _screenHeight == 568) {
            _isIPhone5 = YES;
        } else if (_screenWidth == 320 && _screenHeight == 480) {
            _isIPhone4 = YES;
        }
        
        if (_screenWidth > 370) {
            _isIPhoneBig = YES;
        }
    }
    return self;
}
@end

运行结果


image.png

附带iPhoneX和iPhone6的变量截图

iPhoneX.png iPhone6.png

项目连接地址 - iPhoneX-adaption


上一篇下一篇

猜你喜欢

热点阅读