iOS常見宏定義

在我們?nèi)粘5捻?xiàng)目中煤傍,合理的使用宏定義喷舀,會大大減少我們的代碼量担映,以及代碼的可讀性废士,為方便讀者使用,總結(jié)如下:

pragma mark - Application相關(guān)

///=============================================================================
/// @name Application
///=============================================================================
#define APPLICATION         [UIApplication sharedApplication]
#define APPDLE              (AppDelegate*)[APPLICATION delegate]
#define kKeyWindow          [UIApplication sharedApplication].keyWindow
#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 - Frame相關(guān)

///=============================================================================
/// @name Frame相關(guān)
///=============================================================================
// 控件尺寸比例
#define kScreenRate         (kScreenWidth/375.f)
// 實(shí)際尺寸
#define kSuitSize(size)      kScreenRate * (size)
///=============================================================================

pragma mark - 屏幕坐標(biāo)蝇完、尺寸相關(guān)

///=============================================================================
/// @name 屏幕坐標(biāo)官硝、尺寸相關(guān)
///=============================================================================
//判斷是否iPhone X
#define IS_iPhoneX              ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
// 屏幕高度
#define kScreenHeight           [[UIScreen mainScreen] bounds].size.height
// 屏幕寬度
#define kScreenWidth            [[UIScreen mainScreen] bounds].size.width
// 狀態(tài)欄高度
#define kStatusBarHeight        (IS_iPhoneX ? 44.f : 20.f)
// 頂部導(dǎo)航欄高度
#define kNavigationBarHeight    44.f
// 頂部安全距離
#define kSafeAreaTopHeight      (IS_iPhoneX ? 88.f : 64.f)
// 底部安全距離
#define kSafeAreaBottomHeight   (IS_iPhoneX ? 34.f : 0.f)
// Tabbar高度
#define kTabbarHeight           49.f
// 去除上下導(dǎo)航欄剩余中間視圖高度
#define ContentHeight           (kScreenHeight - kSafeAreaTopHeight - kSafeAreaBottomHeight - kTabbarHeight)
///=============================================================================

pragma mark - 系統(tǒng)相關(guān)

///=============================================================================
/// @name 系統(tǒng)相關(guān)
///=============================================================================
// app版本號
#define DEVICE_APP_VERSION      (NSString *)[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]
// app Build版本號
#define DEVICE_APP_BUILD        (NSString *)[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]
// 系統(tǒng)版本號(string)
#define DEVICE_OS_VERSION       [[UIDevice currentDevice] systemVersion]
// 系統(tǒng)版本號(float)
#define DEVICE_OS_VERSION_VALUE [DEVICE_OS_VERSION floatValue]
///=============================================================================

pragma mark - 字體、顏色相關(guān)

///=============================================================================
/// @name 字體短蜕、顏色相關(guān)
///=============================================================================
#define FONT_SIZE(f)            [UIFont systemFontOfSize:(f)]
#define FONT_BOLD_SIZE(f)       [UIFont boldSystemFontOfSize:(f)]
#define FONT_ITALIC_SIZE(f)     [UIFont italicSystemFontOfSize:(f)]
#define RGBCOLOR(r,g,b)         [UIColor colorWithRed:(r)/255.f green:(g)/255.f blue:(b)/255.f alpha:1.f]
#define RGBACOLOR(r,g,b,a)      [UIColor colorWithRed:(r)/255.f green:(g)/255.f blue:(b)/255.f alpha:(a)]
#define RandomColor             [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0]
#define ColorWithHex(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 - NSLog相關(guān)

///=============================================================================
/// @name NSLog相關(guān)
///=============================================================================
#ifdef DEBUG
#define MLLog(...) NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])
#else
#define NSLog(...)
#endif
///=============================================================================

pragma mark - 判斷數(shù)據(jù)是否為空

///=============================================================================
/// @name 判斷數(shù)據(jù)是否為空
///=============================================================================
#define kStringIsEmpty(str)     ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO )
#define kArrayIsEmpty(array)    (array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0)
#define kDictIsEmpty(dic)       (dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0)
///=============================================================================

后續(xù)我會繼續(xù)收集更多有用高效的宏定義氢架,謝謝你們的支持!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朋魔,一起剝皮案震驚了整個(gè)濱河市岖研,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌警检,老刑警劉巖孙援,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件害淤,死亡現(xiàn)場離奇詭異,居然都是意外死亡拓售,警方通過查閱死者的電腦和手機(jī)筝家,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邻辉,“玉大人,你說我怎么就攤上這事腮鞍≈岛В” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵移国,是天一觀的道長吱瘩。 經(jīng)常有香客問我,道長迹缀,這世上最難降的妖魔是什么使碾? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮祝懂,結(jié)果婚禮上票摇,老公的妹妹穿的比我還像新娘。我一直安慰自己砚蓬,他們只是感情好矢门,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灰蛙,像睡著了一般祟剔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摩梧,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天物延,我揣著相機(jī)與錄音,去河邊找鬼仅父。 笑死叛薯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的笙纤。 我是一名探鬼主播案训,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粪糙!你這毒婦竟也來了强霎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蓉冈,失蹤者是張志新(化名)和其女友劉穎城舞,沒想到半個(gè)月后轩触,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡家夺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年脱柱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拉馋。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡榨为,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出煌茴,到底是詐尸還是另有隱情随闺,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布蔓腐,位于F島的核電站矩乐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏回论。R本人自食惡果不足惜散罕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望傀蓉。 院中可真熱鬧欧漱,春花似錦、人聲如沸葬燎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萨蚕。三九已至靶草,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岳遥,已是汗流浹背奕翔。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浩蓉,地道東北人派继。 一個(gè)月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像捻艳,于是被迫代替她去往敵國和親驾窟。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容