美文网首页iOS11适配相关
swift的“宏定义”适配iPhone X

swift的“宏定义”适配iPhone X

作者: 紫荆逸 | 来源:发表于2017-10-10 17:29 被阅读101次

    oc有宏文件,但是swift没有,不过swift可以不引入头文件就可以随意访问整个项目的任何文件,所以,swift也可以实现宏文件的功能,创建一个swift文件,里面可以这么写

    创建完上面写的是"import Foundation",你如果想使用ui框架,就改成"import UIKit"

    例如,可以如下:

    //
    //  IFHeader.swift
    //  Copyright © 2017年 Supernova Software. All rights reserved.
    //
    
    import UIKit
    
    //获取屏幕的高
    let IPhone_SCREEN_HEIGHT = UIScreen.main.bounds.height
    //获取屏幕宽
    let IPhone_SCREEN_WIDTH = UIScreen.main.bounds.width
    //iPhone X 宏定义
    let iPhoneX = (IPhone_SCREEN_WIDTH == 375.cgfloat && IPhone_SCREEN_HEIGHT == 812.cgfloat ? true : false)
    //适配iPhone X 状态栏高度
    let IPhone_StatusBarHeight = (iPhoneX ? 44.cgfloat : 20.cgfloat)
    // 适配iPhone X Tabbar高度
    let IPhone_TabbarHeight = (iPhoneX ? (49.cgfloat+34.cgfloat) : 49.cgfloat)
    // 适配iPhone X Tabbar距离底部的距离
    let IPhone_TabbarSafeBottomMargin = (iPhoneX ? 34.cgfloat : 0.cgfloat)
    // 适配iPhone X 导航栏高度
    let IPhone_NavHeight = (iPhoneX ? 88.cgfloat : 64.cgfloat)
    

    下面oc版:

    
    // UIScreen width.
    #define  LL_ScreenWidth   [UIScreen mainScreen].bounds.size.width
    
    // UIScreen height.
    #define  LL_ScreenHeight  [UIScreen mainScreen].bounds.size.height
    // iPhone X 
    #define  LL_iPhoneX (LL_ScreenWidth == 375.f && LL_ScreenHeight == 812.f ? YES : NO)
    
    // Status bar height.
    #define  LL_StatusBarHeight      (LL_iPhoneX ? 44.f : 20.f)
    
    // Navigation bar height.
    #define  LL_NavigationBarHeight  44.f
    
    // Tabbar height.
    #define  LL_TabbarHeight         (LL_iPhoneX ? (49.f+34.f) : 49.f)
    
    // Tabbar safe bottom margin.
    #define  LL_TabbarSafeBottomMargin         (LL_iPhoneX ? 34.f : 0.f)
    
    // Status bar & navigation bar height.
    #define  LL_StatusBarAndNavigationBarHeight  (LL_iPhoneX ? 88.f : 64.f)
    
    #define LL_ViewSafeAreInsets(view) ({UIEdgeInsets insets; if(@available(iOS 11.0, *)) {insets = view.safeAreaInsets;} else {insets = UIEdgeInsetsZero;} insets;})
    

    参考来源

    相关文章

      网友评论

        本文标题:swift的“宏定义”适配iPhone X

        本文链接:https://www.haomeiwen.com/subject/ecdwextx.html