在iOS开发中,使用Object-C可以定义一些宏,以方便项目中调用,但是Swift语言中,并不支持宏定义,我们可以采用一个公共文件,定义一些常量、函数、类方法等,并设置相应访问等级,供项目使用。
以下代码,抛砖引玉,以大家参考:
- 在开发阶段,Debug模式下,我们通常会打印很多结果,以定位问题或测试……,可以通过以下方法
/*!
打印内容,并包含类名和打印所在行数
- Parameters: 泛型,打印对象
- file: 打印所属类
- lineNumber: 打印语句所在行数
*/
func BLLog<T>(parameter : T, file : String = #file, lineNumber : Int = #line)
{
#if DEBUG
let fileName = (file as NSString).lastPathComponent
print("[\(fileName):line:\(lineNumber)]\n -\(parameter)\n")
#endif
}
- 一些常量可以用下面方式实现
/*! 导航栏的高 44 */
let BLNavigationBar_h: CGFloat = 44.0
/*! 状态栏的高 */
let BLStatusBar_h = UIApplication.shared.statusBarFrame.height
/*! tabBar 的高 49、83 */
let BLTabBar_h: CGFloat = 49
/** 安全区高度 无tabbar **/
let BLHomeAreaHeight = UIApplication.shared.keyWindow?.safeAreaInsets.bottom
/** 刘海高 **/
var BLBangHeight: CGFloat {
if #available(iOS 11.0, *)
{
return (UIApplication.shared.keyWindow?.safeAreaInsets.top)!
} else
{
return 0
}
}
/** 动态获取状态栏+导航栏高度**/
let BLNavigation_Status_h = BLNavigationBar_h + BLStatusBar_h
let kScreen_height = UIScreen.main.bounds.height
let kScreen_width = UIScreen.main.bounds.width
/** 屏幕高减去导航高**/
let BLSafeAreaHeight = (kScreen_height - BLNavigation_Status_h - BLHomeAreaHeight!)
let kRatio_height = kScreen_height / 667.0
let kRatio_width = kScreen_width / 375.0
let LeftCell_width = 280.0
let BLControlEdge = 15.0
let BLControlGap = 10.0
let BLControlHeight = 20.0
- 对于一些判断,或带参数的宏定义,可以用函数替代,以下供参考
/* 判断是否是带刘海 */
func isIphoneX() -> Bool {
if #available(iOS 11.0, *) {
let window = UIApplication.shared.delegate?.window
guard (window != nil) else { return false }
let heigth: CGFloat = window!!.safeAreaInsets.bottom
if heigth > 0 {
return true
}
}
return false
}
/*!
字体
*/
func BLFont(_ size: CGFloat) -> UIFont {
return UIFont.systemFont(ofSize: size)
}
func BLCFont(_ size: CGFloat, name: String!) -> UIFont {
return UIFont(name: name, size: size)!
}
/*!
颜色
*/
func BLColorFromRGB(rgbValue: UInt32) -> UIColor {
let temp = UInt32(255.0)
let red = ((rgbValue & 0xFF0000) >> 16) / temp
let green = ((rgbValue & 0xFF00) >> 8) / temp
let blue = (rgbValue & 0xFF) / temp
return UIColor(red: CGFloat(red), green: CGFloat(green), blue: CGFloat(blue), alpha: 1)
}
网友评论