鄙人是个菜鸟。。最近在学习swift
swift中 并没有#define 这样的语法 去定义一个宏 那么该怎么办呢?
在swift中 ,所有的头文件都是不需要手动去导入的,于是乎,我们可以这样去做
创建这样一个空的swift类,然后将你需要定义的宏都写在这里面
创建的空文件默认导入的是Foundation,把它直接改成UIKit就行
swift中let可以定义常量 所以用let来定义宏是可以的 ,比如你可以这样干::::
let SCREEN_WIDTH = UIScreen.mainScreen().bounds.size.width
let SCREEN_HEIGHT = UIScreen.mainScreen().bounds.size.height
又或是这样
let IS_IOS_9 = (UIDevice.currentDevice().systemVersion as NSString).doubleValue >= 9.0
如果想要定义一个RGB,你会发现一个let用来宏定义完全不够用,这个时候,大招来了,用一个func来定义一个宏
像是这样。。。
func RGB(r: CGFloat, g: CGFloat, b: CGFloat) -> UIColor {
return UIColor.init(red: r/255.0, green: g/255.0, blue: b/255.0, alpha: 1.0)
}
又或是这样、、、
//#234324
func RGB_16(hexString:String) -> UIColor {
var cString: String = hexString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
if cString.characters.count < 6 {return UIColor.blackColor()}
if cString.hasPrefix("0X") {cString = cString.substringFromIndex(cString.startIndex.advancedBy(2))}
if cString.hasPrefix("#") {cString = cString.substringFromIndex(cString.startIndex.advancedBy(1))}
if cString.characters.count != 6 {return UIColor.blackColor()}
var range: NSRange = NSMakeRange(0, 2)
let rString = (cString as NSString).substringWithRange(range)
range.location = 2
let gString = (cString as NSString).substringWithRange(range)
range.location = 4
let bString = (cString as NSString).substringWithRange(range)
var r: UInt32 = 0x0
var g: UInt32 = 0x0
var b: UInt32 = 0x0
NSScanner.init(string: rString).scanHexInt(&r)
NSScanner.init(string: gString).scanHexInt(&g)
NSScanner.init(string: bString).scanHexInt(&b)
return UIColor(red: CGFloat(r)/255.0, green: CGFloat(g)/255.0, blue: CGFloat(b)/255.0, alpha: CGFloat(1))
}