#pragma mark - 字型、顏色相關
#define kFONT_SIZE(f) [UIFont systemFontOfSize:(f)]
#define kFONT_BOLD_SIZE(f) [UIFont boldSystemFontOfSize:(f)]
#define kFONT_ITALIC_SIZE(f) [UIFont italicSystemFontOfSize:(f)]
#define kRGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.f green:(g)/255.f blue:(b)/255.f alpha:1.f]
#define kRGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.f green:(g)/255.f blue:(b)/255.f alpha:(a)]
#define kRandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0]
#define kColorWithHex(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 green:((float)((rgbValue & 0xFF00) >> 8)) / 255.0 blue:((float)(rgbValue & 0xFF)) / 255.0 alpha:1.0]
///=============================================================================
#pragma mark - 圖片載入
// 載入圖片
#define kGetImage(imageName) [UIImage imageNamed:[NSString stringWithFormat:@"%@",imageName]]
// 讀取本地圖片 (檔名,字尾名)
#define kGetBundleImage(__FILENAME__,__EXTENSION__) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:__FILENAME__ ofType:__EXTENSION__]]
///=============================================================================
#pragma mark - 控制檯列印
#ifdef DEBUG
#define kLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(FORMAT, ...) nil
#endif
///=============================================================================
#pragma mark - 判斷資料是否為空
// 字串是否為空
#define kISNullString(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO )
// 陣列是否為空
#define kISNullArray(array) (array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0 ||[array isEqual:[NSNull null]])
// 字典是否為空
#define kISNullDict(dic) (dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0 || [dic isEqual:[NSNull null]])
// 是否是空物件
#define kISNullObject(_object) (_object == nil \
|| [_object isKindOfClass:[NSNull class]] \
|| ([_object respondsToSelector:@selector(length)] && [(NSData *)_object length] == 0) \
|| ([_object respondsToSelector:@selector(count)] && [(NSArray *)_object count] == 0))
///=============================================================================
#pragma mark - Application相關
// APP物件 (單例物件)
#define kApplication [UIApplication sharedApplication]
// APP物件
#define kAppDelegate (AppDelegate*)[[UIApplication sharedApplication] delegate]
// 主視窗 (keyWindow)
#define kKeyWindow [UIApplication sharedApplication].keyWindow
// NSUserDefaults例項化
#define kUserDefaults [NSUserDefaults standardUserDefaults]
// 通知中心 (單例物件)
#define kNotificationCenter [NSNotificationCenter defaultCenter]
//獲取temp
#define kPathTemp NSTemporaryDirectory()
//獲取沙盒 Document
#define kPathDocument [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]
//獲取沙盒 Cache
#define kPathCache [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]
///=============================================================================
#pragma mark - 螢幕座標、尺寸相關
// 判斷是否iPhone X
#define kIS_iPhoneX UIApplication.sharedApplication.statusBarFrame.size.height > 20 : YES : NO
// 螢幕高度
#define kScreenHeight [[UIScreen mainScreen] bounds].size.height
// 螢幕寬度
#define kScreenWidth [[UIScreen mainScreen] bounds].size.width
// 狀態列高度
#define kStatusBarHeight UIApplication.sharedApplication.statusBarFrame.size.height
// 頂部導航欄高度
#define kNavigationBarHeight 44.f
// 狀態列高度 + 頂部導航欄高度
#define kSafeAreaTopHeight UIApplication.sharedApplication.statusBarFrame.size.height + 44
// 底部安全距離
#define kSafeAreaBottomHeight (IS_iPhoneX ? 34.f : 0.f)
// Tabbar高度
#define kTabbarHeight 49.f
// 控制元件尺寸比例
#define kScreenWidthRate ([[UIScreen mainScreen] bounds].size.width/375.f)
// 實際寬尺寸
#define kSuitWidthSize(size) kScreenWidthRate * (size)
// 控制元件尺寸比例
#define kScreenHeightRate ([[UIScreen mainScreen] bounds].size.height/667.f)
// 實際高尺寸
#define kSuitHeightSize(size) kScreenHeightRate * (size)
///=============================================================================
#pragma mark - 強弱引用
#define kWeakSelf(type) __weak typeof(type) weak##type = type;
#define kStrongSelf(type) __strong typeof(type) type = weak##type;
///=============================================================================
複製程式碼
iOS-日常開發常用巨集定義
日常開發常用巨集定義
相關文章
- 巨集定義
- 巨集定義跟多個引數
- object-c 常用判斷null的巨集定義,如果是null直接返回@””ObjectNull
- Visual C++ MFC 中常用巨集的含義C++
- C++中巨集定義#define的用法C++
- 0x03. 使用巨集定義事件事件
- c 語言中巨集定義和定義全域性變數的區別變數
- 【C進階】21、巨集定義與使用分析
- 開發日常
- 巨集定義裡面為什麼要加括號?
- gcc編譯階段列印巨集定義的內容GC編譯
- 敏捷開發中如何定義“完成”?敏捷
- C語言中的標頭檔案中的巨集定義C語言
- 記憶體對齊巨集定義的簡明解釋記憶體
- scala----常用方法 類的定義
- C語言巨集定義中#define中的井號#的使用C語言
- libev中ev_loop結構體中巨集定義的理解OOP結構體
- PHP 日常開發備忘PHP
- Idea日常開發外掛Idea
- iOS-對圖片操作---新增到自定義相簿iOS
- Java開發學習(十)----基於註解開發定義beanJavaBean
- C++中使用巨集定義來註釋掉所有的cout輸出C++
- 雲端IDE如何重定義開發體驗IDE
- iOS-設定AppIcon圖示和啟動頁iOSAPP
- C++ | VS2017 C++專案配置使用的常見巨集定義C++
- 關於malloc原始碼中的bin_at巨集定義的個人見解原始碼
- 提高程式碼逼格的利器:巨集定義-從入門到放棄
- C語言零基礎教程之預處理和巨集定義篇C語言
- Android 日常開發問題總結Android
- MySQL Ruler mysql 日常開發規範MySql
- Superset SSO改造和自定義巨集命令
- Lync日常運維常用命令運維
- Docker日常工作常用命令Docker
- 聊聊開發日常的效率提升工具(全)
- 【iOS】定義@property時常用的修飾詞介紹iOS
- pytorch模型定義常用函式以及resnet模型修改案例PyTorch模型函式
- C語言學習第18篇---巨集定義與使用 / 條件編譯使用分析C語言編譯
- 「硬核乾貨」總結 IDEA 開發的26個常用設定Idea