美文网首页工作生活
Swift 声明宏定义

Swift 声明宏定义

作者: Balopy | 来源:发表于2019-06-30 23:01 被阅读0次

在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)
}

相关文章

  • Swift 声明宏定义

    在iOS开发中,使用Object-C可以定义一些宏,以方便项目中调用,但是Swift语言中,并不支持宏定义,我们可...

  • swift 如何设置全局头文件

    swift 没有了 #define 宏定义,可以用 let 声明。 (swift 不用声明全局头文件的,是不是方便...

  • swift&&OC

    宏定义 OC中的宏定义 swift中的宏定义 OC中宏定义的方式,在swift中是不可用的,在swift中,宏定义...

  • Swift-CommonFunctions

    Swift中没有宏定义,那么全局常量可以建立一个空的Swift文件去统一声明。 复杂的宏在Swift中则使用全局函...

  • Swift 宏定义与代码标记

    Swift中的”宏” 写Objective-C的时候常常会用到各种宏定义,但是Swift中貌似没有宏的这种定义,更...

  • iOS 单例

    Objective-C 单例宏 Swift 单例声明

  • Swift-OC混编总结

    一、swift怎么用oc定义的宏?1、在swift中,能直接使用定义为常量的宏,不能使用带有方法调用的宏,也不能使...

  • 宏定义 define

    // 宏定义 define // Swift 中宏定义被去除了,取代的是 let 或者 get 属性 // 例如 ...

  • OC&swift中的宏定义

    在使用OC和swift进行混编时,我们经常会需要在swift中使用OC中的宏定义,但是这些宏定义经常会提示无法找到...

  • 【OC】宏、const、static、extern

    宏 常用字符串,常见基本变量,可以定义为宏苹果推荐使用const,而不是宏(Swift没有宏定义) const 与...

网友评论

    本文标题:Swift 声明宏定义

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