Swift中的宏

Swift本身不支持宏定義,因此相關的操作采用的是常量代替

1.創建一個Swift文件專門用于存放代替宏的常量

2.常量->宏定義

let SCREEN_HEIGHT = UIScreen.mainScreen().bounds.height
let SCREEN_WIDTH = UIScreen.mainScreen().bounds.width
let FIT_WIDTH = UIScreen.mainScreen().bounds.size.width / 375
let FIT_HEIGHT = UIScreen.mainScreen().bounds.size.height / 667
let FONT_30 = UIFont.systemFontOfSize(15)
let FONT_60 = UIFont.systemFontOfSize(30)
let FONT_140 = UIFont.systemFontOfSize(70)
let systemVersion = (UIDevice .currentDevice().systemVersion as String)

3.全局函數->宏函數

func x(object: UIView) ->CGFloat {
     return object.frame.origin.x
}

func y(object: UIView) -> CGFloat {
     return object.frame.origin.y
}

func width(object: UIView) -> CGFloat {
     return object.frame.size.width
}

func height(object: UIView) -> CGFloat {
     return object.frame.size.height
}

func centerX(object: UIView) -> CGFloat {
     return object.center.x
}

func centerY(object: UIView) -> CGFloat {
     return object.center.y
}

//RGB
func RGB(r:CGFloat,g:CGFloat,b:CGFloat)->UIColor{
    return UIColor(red: r/255.0, green: g/255.0, blue: b/255.0, alpha: 1)
}

由于是全局的,使用起來直接調用即可

此時你可能會對宏定義提出疑問,如果有宏定義來進行編譯控制,#ifdef之類的處理如何做,swift在這點上做了處理,但是需要借借助于編譯符號
1.設置編譯符號

hong.jpg

2.code

        #if DEBUGXXX
            print("debug xxxx")
        #else
             print("no debug xxxx")
        #endif

3.效果

result.jpg

總結

Swift本身不支持宏,但是我們可以通過常量+編譯符號實現一樣的效果

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容