Swift 中没有宏定义,苹果建议使用let 或者 get 属性来替代宏定义值。虽然没有#define,但我们仍然可以使用 #if 并配合编译的配置来完成条件编译。下面会列出Swift项目开发中的一些常用宏定义,并提供源码。

1.常用字体宏定义

import Foundation
import UIKit /// 系统普通字体
var gof_SystemFontWithSize: (CGFloat) -> UIFont = {size in
return UIFont.systemFontOfSize(size);
} /// 系统加粗字体
var gof_BoldFontWithSize: (CGFloat) -> UIFont = {size in
return UIFont.boldSystemFontOfSize(size);
} /// 仅用于标题栏上,大标题字号
let kNavFont = gof_SystemFontWithSize(); /// 标题字号
let kTitleFont = gof_SystemFontWithSize(); /// 正文字号
let kBodyFont = gof_SystemFontWithSize(); /// 辅助字号
let kAssistFont = gof_SystemFontWithSize();

2.常用颜色宏定义

import Foundation
import UIKit /// 根据RGBA生成颜色(格式为:22,22,22,0.5)
var gof_RGBAColor: (CGFloat, CGFloat, CGFloat, CGFloat) -> UIColor = {red, green, blue, alpha in
return UIColor(red: red / , green: green / , blue: blue / , alpha: alpha);
} /// 根据RGB生成颜色(格式为:22,22,22)
var gof_RGBColor: (CGFloat, CGFloat, CGFloat) -> UIColor = {red, green, blue in
return UIColor(red: red / , green: green / , blue: blue / , alpha: );
} /// 根据色值生成颜色(无透明度)(格式为0xffffff)
var gof_ColorWithHex: (NSInteger) -> UIColor = {hex in
return UIColor(red: ((CGFloat)((hex & 0xFF0000) >> )) / 255.0, green: ((CGFloat)((hex & 0xFF00) >> )) / 255.0, blue: ((CGFloat)(hex & 0xFF)) / 255.0, alpha: );
} /// 黑色
let kBColor = gof_ColorWithHex(0x000000);
/// 白色
let kWColor = gof_ColorWithHex(0xffffff)
/// 无色
let kCColor = UIColor.clearColor();
let kG1Color = gof_ColorWithHex(0x323232);
let kG2Color = gof_ColorWithHex(0x646464);
let kG3Color = gof_ColorWithHex(0x969696);
let kG4Color = gof_ColorWithHex(0xc8c8c8); // 仅使用标题栏分割线
let kG5Color = gof_ColorWithHex(0xdcdcdc); // 主页面分割线
let kG6Color = gof_ColorWithHex(0xf0f0f0); // 仅用于背景灰
let kBgColor = gof_ColorWithHex(0xf8f8f8); // 界面背景颜色
let kHolderTipColor = gof_ColorWithHex(0xafafaf); // 提示:输入框,这个提示语的颜色
let kButtonBlueColor = gof_ColorWithHex(0x41acff); let kLightColor = gof_ColorWithHex(0x666666);
let kGrayTitleColor = gof_ColorWithHex(0x999999);
let kGrayTipColor = gof_ColorWithHex(0x757575); let k323232Color = gof_ColorWithHex(0x323232);
let k646464Color = gof_ColorWithHex(0x646464);
let k969696Color = gof_ColorWithHex(0x969696);
let kf0f0f0Color = gof_ColorWithHex(0xf0f0f0); /// 三大色调
let kEssentialColor = gof_ColorWithHex(0x46a0f0); // 主色调,蓝色
let kAssistOrangeColor = gof_ColorWithHex(0xff8c28); // 辅色调,橙色
let kAssistGreenColor = gof_ColorWithHex(0x5abe00); // 辅色调,绿色

3.常用变量/方法定义

import Foundation
import UIKit // MARK: - 打印日志 /**
打印日志 - parameter message: 日志消息内容
*/
func printLog<T>(message: T)
{
#if DEBUG
print(" \(message)");
#endif
} // MARK: - 线程队列 /// 主线程队列
let kMainThread = dispatch_get_main_queue();
/// Global队列
let kGlobalThread = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, ); // MARK: - 系统版本 /// 获取系统版本号
let kSystemVersion = Float(UIDevice.currentDevice().systemVersion);
/// 是否IOS7系统
let kIsIOS7OrLater = Int(UIDevice.currentDevice().systemVersion) >= ? true : false;
/// 是否IOS8系统
let kIsIOS8OrLater = Int(UIDevice.currentDevice().systemVersion) >= ? true : false;
/// 是否IOS9系统
let kIsIOS9OrLater = Int(UIDevice.currentDevice().systemVersion) >= ? true : false; // MARK: - 常用宽高 /// 屏幕Bounds
let kScreenBounds = UIScreen.mainScreen().bounds;
/// 屏幕高度
let kScreenHeight = UIScreen.mainScreen().bounds.size.height;
/// 屏幕宽度
let kScreenWidth = UIScreen.mainScreen().bounds.size.width;
/// 导航栏高度
let kNavBarHeight = 44.0;
/// 状态栏高度
let kStatusBarHeight = 20.0;
/// Tab栏高度
let kTabBarHeight = 49.0; //根据图片名称获取图片
let gof_ImageWithName: (String) -> UIImage? = {imageName in
return UIImage(named: imageName);
}

  【注意】:上面的printLog用了条件编译,DEBUG需要在TARGET中配置一下,具体如下图:

26.怎样在Swift中定义宏?的更多相关文章

  1. swift中类似宏定义

    建一个类 如,在Contans.swift中 import UIKit let kMAIN_SIZE = UIScreen.mainScreen().bounds 在其他地方直接用 比如在 MyTab ...

  2. 在Swift中定义属于自己的运算符

    precedencegroup ChainingPrecedence { associativity: left higherThan: TernaryPrecedence } infix opera ...

  3. makefile 中定义宏位置需要注意一下

    CUR_DIR = $(shell pwd) CFLAGS = -g -Wall GCC = gcc GXX = g++ TARGET = exe.out SRC_FILES += $(shell f ...

  4. Swift中使用typealias定义一个闭包closure

    在OC中我们定义一个Blocks是这样定义的: typedef void (^ZWProgressHUDCompletionBlock)(); 在Swift中定义一个闭包是这种: typealias ...

  5. Swift中自定义Log打印方法

    系统如何调用super方法 系统默认只会在构造函数中,自动调用super.init()方法,而且是在所写方法的尾部进行调用. 在其他函数中,如何需要调用父类的默认实现,都需要手动去实现. 如果在构造函 ...

  6. Swift中的Optional类型 (可选类型)与强制解包 ? !

    我们在swift的开发中会经常遇见?和! ,理解这两个符号深层次的内容对我们的开发是相当有利的: 目前网上对swift3.0的教程还相当的少,如果去搜索会发现早期的说法,在定义变量的时候,swift是 ...

  7. IOS中利用宏将RGB值转换为UIColor(转)

    可以在pch文件中定义宏,这样整个项目就都可以用了! #define UIColorFromRGBValue(rgbValue) [UIColor colorWithRed:((float)((rgb ...

  8. latex如何定义宏,插图统一尺寸减少工作量

    问题背景是这样的,因为我要在文中插入一系列的图片,但是这些图片的大小我要保持一致,来达到预期的效果. 比如我有三个figure,这三个figure中,每个figure里面有两行,5列图片,我想要的是, ...

  9. Objective的宏到swift中该怎么办?

    ReadMehtml, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror-scroll { ...

随机推荐

  1. UIColor,CGColor,CIColor三者的区别和联系

    UIColor,CGColor,CIColor三者的区别和联系((转)) 最近看了看CoreGraphics的东西,看到关于CGColor的东西,于是就想着顺便看看UIColor,CIColor,弄清 ...

  2. poj 2661 Factstone Benchmark (Stirling数)

    //题意是对于给定的x,求满足n! <= 2^(2^x)的最大的n//两边同取以二为底的对数,可得: lg2(n!) <= 2^x 1.   log2(n!) = log2(1) + lo ...

  3. Memcached 内存级缓存

    Memcached在大型网站中应用    memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视 频.文件以及 ...

  4. 在Ubuntu中用root帐号登录

    一.其实我个人认为这没有多大必要,因为当你需要 root 的权限时,使用 sudo 便可以了.如果你实在需要在 Ubuntu 中启用 root 帐号的话,那么不妨执行下面的操作: 1.重新设置 roo ...

  5. 【转】谈一谈PHP字串清除空格函数不安全

    清除空格的方法是不安全的,部分原因是因为字符中的空格非常多,例如 "addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xb ...

  6. SVN中检出(check out) 和 导出(export) 的区别

    SVN是常用的一种常见的版本控制软件.SVN中检出(check out) 和 导出(export) 的区别主要有如下几条: check out跟check in对应,export跟import对应. ...

  7. android操作SQLite

    一.SQLite SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是: NULL: 空值 INTEGER: 整数 REAL: 浮点数 TEXT: 字符串 BLOB: 大数据 ...

  8. 怎样为EXCEL2010添加下拉列表

    注意,下面是Excel2010的步骤和截图,其他版本的Excel类似.   首先用鼠标左键点击你要添加下拉列表的单元格. 如果你只想部分区域有下拉列表,也可以选择部分区域. 下面图片是选择的整个列都是 ...

  9. CSS概述<选择器总结>

    概述:CSS是指层叠样式表,他是定义如何显示HTML元素,样式表通常存储在样式表中,通常存储在.css文件中,下面对css的选择器进行总结,便大家夯实基础! 1 语法规范: 每个样式规则有两个部分:选 ...

  10. 【Unity入门】碰撞检测与触发检测

    版权声明:本文为博主原创文章,转载请注明出处. 在Unity里面,游戏物体的碰撞我们可以通过刚体组件(Rigidbody)和碰撞器组件(Collider)来进行检测.首先在场景里面添加一个Plane面 ...