工作生活

Swift 声明宏定义

2019-06-30  本文已影响0人  Balopy

在iOS开发中,使用Object-C可以定义一些宏,以方便项目中调用,但是Swift语言中,并不支持宏定义,我们可以采用一个公共文件,定义一些常量、函数、类方法等,并设置相应访问等级,供项目使用。

以下代码,抛砖引玉,以大家参考:

  1. 在开发阶段,Debug模式下,我们通常会打印很多结果,以定位问题或测试……,可以通过以下方法
/*!
 打印内容,并包含类名和打印所在行数
 - Parameters:  泛型,打印对象
 - file: 打印所属类
 - lineNumber: 打印语句所在行数
 */
func BLLog<T>(parameter : T, file : String = #file, lineNumber : Int = #line)
{
    #if DEBUG
    
    let fileName = (file as NSString).lastPathComponent
    print("[\(fileName):line:\(lineNumber)]\n -\(parameter)\n")
    
    #endif
}

  1. 一些常量可以用下面方式实现
/*! 导航栏的高 44 */
let BLNavigationBar_h: CGFloat = 44.0
/*! 状态栏的高  */
let BLStatusBar_h = UIApplication.shared.statusBarFrame.height

/*! tabBar 的高 49、83 */
let BLTabBar_h: CGFloat = 49

/** 安全区高度 无tabbar **/
let BLHomeAreaHeight = UIApplication.shared.keyWindow?.safeAreaInsets.bottom

/** 刘海高 **/
var BLBangHeight: CGFloat {
    
    if #available(iOS 11.0, *)
    {
        return (UIApplication.shared.keyWindow?.safeAreaInsets.top)!
    } else
    {
        return 0
    }
}

/** 动态获取状态栏+导航栏高度**/
let BLNavigation_Status_h = BLNavigationBar_h + BLStatusBar_h

let kScreen_height = UIScreen.main.bounds.height
let kScreen_width = UIScreen.main.bounds.width

/** 屏幕高减去导航高**/
let BLSafeAreaHeight = (kScreen_height - BLNavigation_Status_h - BLHomeAreaHeight!)

let kRatio_height = kScreen_height / 667.0
let kRatio_width = kScreen_width / 375.0

let LeftCell_width = 280.0
let BLControlEdge = 15.0
let BLControlGap = 10.0
let BLControlHeight = 20.0

  1. 对于一些判断,或带参数的宏定义,可以用函数替代,以下供参考
 /* 判断是否是带刘海 */
func isIphoneX() -> Bool {
   
    if #available(iOS 11.0, *) {
       
        let window = UIApplication.shared.delegate?.window
        
        guard (window != nil) else { return false }
        
        let heigth: CGFloat = window!!.safeAreaInsets.bottom
        
        if heigth > 0 {
            
            return true
        }
    }
    return false
}


/*!
 字体
*/

func BLFont(_ size: CGFloat) -> UIFont {
   return UIFont.systemFont(ofSize: size)
}

func BLCFont(_ size: CGFloat, name: String!) -> UIFont {
    return UIFont(name: name, size: size)!
}

/*!
 颜色
*/
func BLColorFromRGB(rgbValue: UInt32) -> UIColor {
  
    let temp = UInt32(255.0)
    
    let red = ((rgbValue & 0xFF0000) >> 16) / temp
    let green = ((rgbValue & 0xFF00) >> 8) / temp
    let blue = (rgbValue & 0xFF) / temp
    
    return UIColor(red: CGFloat(red), green: CGFloat(green), blue: CGFloat(blue), alpha: 1)
}

上一篇 下一篇

猜你喜欢

热点阅读