swift中並沒有加入巨集系統,c語言使用#define定義的基本常量在匯入swift時被swift編譯自動轉為swfit語言的全域性變數。但複雜的巨集定義不能被swift轉換。swift中類似巨集定義,可以單獨建立乙個類,如const.swift,在此類中宣告一些常量。
例如:
// 螢幕的寬
let screen_width = uiscreen.main.bounds.size.width
// 螢幕的高
let screen_height = uiscreen.main.bounds.size.height
//判斷iphone4
let iphone4_dev:bool! = (uiscreen.main.bounds.size.height == 480) ? true : false
//判斷iphone5/
5c/5s
let iphone5_dev
:bool! = (uiscreen.main.bounds.size.height == 568) ? true
:false
//判斷iphone6/
6slet iphone6s_dev
:bool! = (uiscreen.main.bounds.size.height == 667) ? true
:false
//判斷iphone6p
let iphone6p_dev:bool! = (uiscreen.main.bounds.size.height > 667) ? true : false
//判斷ipad
let ipad_dev:bool! = (uidevice.current.userinte***ceidiom == .pad) ? true : false
當然,swift也支援條件編譯
#if iphone4_dev
//iphone4設定編譯此處
#elseif iphone5_dev
//iphone5/
5c/5s設定編譯此處
#elseif iphone6_dev
//iphone6/
6s設定編譯此處
#elseif iphone6p_dev
//iphone6p設定編譯此處
#elseif ipad_dev
//ipad設定編譯此處
#else
//其他設定編譯此處
#endif
對於複雜一點的,僅僅使用常量定義是難以實現的,需要定義巨集方法來達到目的。
例如:
/// 重置透明度的隨即色
////// - parameter r
: red
/// - parameter g
: green
/// - parameter b
: black
/// - parameter a
: alpha (0~1之間)
///func xyqrandomcoloralpha(r
:cgfloat,g
:cgfloat,b
:cgfloat,a
:cgfloat) -> uicolor
/// 預設透明度的隨即色
////// - parameter r
: red
/// - parameter g
: green
/// - parameter b
: black
///func xyqrandomcolor(r
:cgfloat,g
:cgfloat,b
:cgfloat) -> uicolor
注意:建立的巨集檔案,也即const.swift檔案的路徑設定和oc是一樣的,都需要在buildsetting中prefix header處設定。
Swift4 0 基礎部分
翻譯能力有限,如有不對的地方,還請見諒!希望對swift的學習者有所幫助 swift是一門新的程式語言,用於ios,macos,watchos以及tvos系統平台上應用程式的開發。儘管如此,如果有c和objective c開發經驗的話,那麼對於swift的許多部分,你將並不陌生。c和objectiv...
Swift 4 0 陣列 Array 學習
定義陣列常量 常量只有讀操作 let array1 int 11,55,5 let array2 11,55,5 定義陣列變數var array int 這是我最喜歡的 var array0 int 10,20,30 初始化並賦值 var array1 int array var array2 ar...
Swift 4 0 高階 自定義操作符
注意 在swift初期 1.0,2.0 和 這些前 後 置運算子還是可以使用的,但是會有警告 但在swift4.0已經不能使用了 編譯無法通過 不過我們自己定義的前 後 置運算子是可以使用的。1.中置運算子 示例 定義優先順序組 precedencegroup myprecedence infix ...