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本身不支持宏,但是我們可以通過常量+編譯符號實現一樣的效果