iOS 常用宏定義大全

// Frame
#define SCREEN_FRAME    ([UIScreen mainScreen].applicationFrame)
// 寬度
#define SCREEN_WIDTH    ([UIScreen mainScreen].bounds.size.width)
// 高度
#define SCREEN_HEIGHT   ([UIScreen mainScreen].bounds.size.height)
// iPhone6寬比
#define KBaseW          [UIScreen mainScreen].bounds.size.width / 375
// iPhone6高比
#define KBaseH          [UIScreen mainScreen].bounds.size.height / 667
// RGBA
#define RGBA(R /*紅*/, G /*綠*/, B /*藍(lán)*/, A /*透明*/)   [UIColor colorWithRed: (float)R / 255.f green: (float)G / 255.f blue: (float)B / 255.f alpha: A]
// RGB
#define RGB(r, g, b)        [UIColor colorWithRed: (r) / 255.0 green: (g) / 255.0 blue: (b) / 255.0 alpha: 1.0]

// 沙盒目錄
#define kUserDefaults       [NSUserDefaults standardUserDefaults]

// 獲取通知中心
#define kNotificationCenter [NSNotificationCenter defaultCenter]

// 設(shè)置隨機(jī)顏色
#define kRandomColor        [UIColor colorWithRed:arc4random_uniform(256) / 255.0 green:arc4random_uniform(256) / 255.0 blue:arc4random_uniform(256) / 255.0 alpha:1.0]

// clear背景顏色
#define kClearColor         [UIColor clearColor]

// 自定義高效率的 NSLog
#ifdef DEBUG
  #define kLog(...) NSLog(@"%s 第%d行 \n %@\n\n", __func__, __LINE__, [NSString stringWithFormat:__VA_ARGS__])
#else
  #define kLog(...)

#endif

// 弱引用/強(qiáng)引用
#define kWeakSelf(type)     __weak typeof(type) weak##type = type;
#define kStrongSelf(type)   __strong typeof(type) type = weak##type;

// 設(shè)置 view 圓角和邊框
#define kViewBorderRadius(View, Radius, Width, Color) \
                                                      \
    [View.layer setCornerRadius: (Radius)];           \
    [View.layer setMasksToBounds:YES];                \
    [View.layer setBorderWidth:(Width)];              \
    [View.layer setBorderColor:[Color CGColor]]

// 由角度轉(zhuǎn)換弧度 由弧度轉(zhuǎn)換角度
#define kDegreesToRadian(x)         (M_PI * (x) / 180.0)
#define kRadianToDegrees(radian)    (radian * 180.0) / (M_PI)

// 獲取keyWindow
#define kWindow [UIApplication sharedApplication].keyWindow

// 設(shè)置狀態(tài)條加載
#define kShowNetworkActivityIndicator() [UIApplication sharedApplication].networkActivityIndicatorVisible = YES
// 收起狀態(tài)條加載
#define kHideNetworkActivityIndicator() [UIApplication sharedApplication].networkActivityIndicatorVisible = NO

// MBProgressHUD加載
#define kShowHUDAndActivity kBackView; [MBProgressHUD showHUDAddedTo:kWindow animated:YES]; kShowNetworkActivityIndicator()

// MBProgressHUD隱藏
#define kHiddenHUD          [MBProgressHUD hideAllHUDsForView:kWindow animated:YES]; kHideNetworkActivityIndicator()

// 獲取圖片資源
#define kGetImage(imageName) [UIImage imageNamed:[NSString stringWithFormat:@"%@", imageName]]

// 獲取當(dāng)前語(yǔ)言
#define kCurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])

// 使用 ARC 和 MRC
#if __has_feature(objc_arc)
    // ARC
#else
    // MRC
#endif

// 判斷是否為iPhone
#define IS_IPHONE               (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

// 判斷是否為iPad
#define IS_IPAD                 (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

// 判斷是否為ipod
#define IS_IPOD                 ([[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"])

// 判斷是否為 iPhone 5/5s/SE
#define iPhone5SE               [[UIScreen mainScreen] bounds].size.width == 320.0f && [[UIScreen mainScreen] bounds].size.height == 568.0f

// 判斷是否為iPhone 6/6s
#define iPhone6_6s              [[UIScreen mainScreen] bounds].size.width == 375.0f && [[UIScreen mainScreen] bounds].size.height == 667.0f

// 判斷是否為iPhone 6Plus/6sPlus
#define iPhone6Plus_6sPlus      [[UIScreen mainScreen] bounds].size.width == 414.0f && [[UIScreen mainScreen] bounds].size.height == 736.0f

// 獲取系統(tǒng)版本
#define IOS_SYSTEM_VERSION      [[[UIDevice currentDevice] systemVersion] floatValue]

// 判斷 iOS 8 或更高的系統(tǒng)版本
#define IOS_VERSION_8_OR_LATER  (([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) ? (YES) : (NO))

// 判斷是真機(jī)還是模擬器
#if TARGET_OS_IPHONE
    // iPhone Device
#endif

#if TARGET_IPHONE_SIMULATOR
    // iPhone Simulator
#endif

// 沙盒目錄文件
// 獲取temp
#define kPathTemp       NSTemporaryDirectory()

// 獲取沙盒 Document
#define kPathDocument   [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]

// 獲取沙盒 Cache
#define kPathCache      [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]

// GCD 的宏定義
// GCD - 一次性執(zhí)行
#define kDISPATCH_ONCE_BLOCK(onceBlock)                     static dispatch_once_t onceToken; dispatch_once(&onceToken, onceBlock);

// GCD - 在Main線程上運(yùn)行
#define kDISPATCH_MAIN_THREAD(mainQueueBlock)               dispatch_async(dispatch_get_main_queue(), mainQueueBlock);

// GCD - 開(kāi)啟異步線程
#define kDISPATCH_GLOBAL_QUEUE_DEFAULT(globalQueueBlock)    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), globalQueueBlocl);

沒(méi)有一蹴而就的天才酒来,只有不斷點(diǎn)亮天賦的勤者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驹闰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子个粱,更是在濱河造成了極大的恐慌讶隐,老刑警劉巖魂莫,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掺逼,死亡現(xiàn)場(chǎng)離奇詭異诵肛,居然都是意外死亡钦扭,警方通過(guò)查閱死者的電腦和手機(jī)嫂冻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)创坞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)府寒,“玉大人断凶,你說(shuō)我怎么就攤上這事伤提。” “怎么了认烁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵肿男,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我砚著,道長(zhǎng)次伶,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任稽穆,我火速辦了婚禮冠王,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘舌镶。我一直安慰自己柱彻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布餐胀。 她就那樣靜靜地躺著哟楷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪否灾。 梳的紋絲不亂的頭發(fā)上卖擅,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音墨技,去河邊找鬼惩阶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扣汪,可吹牛的內(nèi)容都是我干的断楷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼崭别,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冬筒!你這毒婦竟也來(lái)了恐锣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舞痰,失蹤者是張志新(化名)和其女友劉穎土榴,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體匀奏,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鞭衩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了娃善。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片论衍。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖聚磺,靈堂內(nèi)的尸體忽然破棺而出坯台,到底是詐尸還是另有隱情,我是刑警寧澤瘫寝,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布蜒蕾,位于F島的核電站,受9級(jí)特大地震影響焕阿,放射性物質(zhì)發(fā)生泄漏咪啡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一暮屡、第九天 我趴在偏房一處隱蔽的房頂上張望撤摸。 院中可真熱鬧,春花似錦褒纲、人聲如沸准夷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)衫嵌。三九已至,卻和暖如春彻秆,著一層夾襖步出監(jiān)牢的瞬間楔绞,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工唇兑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留墓律,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓幔亥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親察纯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子帕棉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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