美文网首页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