iOS 日常工作之常用宏定義大全

1.獲取屏幕寬度與高度

#define SCREEN_WIDTH[UIScreen mainScreen].bounds.size.width

#define SCREENH_HEIGHT[UIScreen mainScreen].bounds.size.height

2.獲取通知中心

#define NotificationCenter [NSNotificationCenter defaultCenter]

3.設(shè)置隨機(jī)顏色

#define RandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0]

4.設(shè)置RGB顏色/設(shè)置RGBA顏色

#define RGB(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]#defineLRRGBAColor(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(r)/255.0 blue:(r)/255.0 alpha:1]

// clear背景顏色

#define ClearColor [UIColor clearColor]

5.自定義高效率的 NSLog

項(xiàng)目開發(fā)中,我們會(huì)在許多地方加上Log概漱,但是發(fā)布的時(shí)候又不想用這些Log替梨,我們也不可能一個(gè)一個(gè)的刪除糜颠,所以自定義Log是必然的!

#ifdefDEBUG

#define LCLog(...) NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])

#else

#define LRLog(...)

#endif

6.弱引用/強(qiáng)引用

#define WeakSelf(type)? __weak typeof(type) weak##type = type

#define StrongSelf(type)? __strong typeof(type) type = weak##type

7.設(shè)置 view 圓角和邊框

#defineLRViewBorderRadius(View,Radius,Width,Color)\

\[View.layer setCornerRadius:(Radius)];

\[View.layer setMasksToBounds:YES];

\[View.layer setBorderWidth:(Width)];

\[View.layer setBorderColor:[Color CGColor]]

8.由角度轉(zhuǎn)換弧度 由弧度轉(zhuǎn)換角度

#define DegreesToRadian(x) (M_PI * (x) / 180.0)

#define RadianToDegrees(radian) (radian*180.0)/(M_PI)

12.獲取當(dāng)前語(yǔ)言

#define CurrentLanguage([[NSLocale preferredLanguages]objectAtIndex:0])

14.判斷當(dāng)前的iPhone設(shè)備/系統(tǒng)版本

//判斷是否為iPhone

#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

#define IS_IPHONE ([[[UIDevice currentDevice] model] isEqualToString:@"iPhone"])

//判斷是否為iPad

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

#define IS_IPAD ([[[UIDevice currentDevice] model] isEqualToString:@"iPad"])

//判斷是否為ipod

#define IS_IPOD ([[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"])

// 判斷是否為 iPhone 5SE

#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)版本//這個(gè)方法不是特別靠譜

#define IOS_SYSTEM_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]

//建議使用這個(gè)方法

#define IOS_SYSTEM_STRING [[UIDevice currentDevice] systemVersion]

//判斷 iOS 8 或更高的系統(tǒng)版本

#define IOS_VERSION_8_OR_LATER (([[[UIDevice currentDevice] systemVersion] floatValue] >=8.0)? (YES):(NO))

15.判斷是真機(jī)還是模擬器

// 判斷是不是iOS系統(tǒng),如果是iOS系統(tǒng)在真機(jī)和模擬器輸出都是YES

#ifTARGET_OS_IPHONE

#endif

#if(TARGET_IPHONE_SIMULATOR)

????????????????????????????// 在模擬器的情況下

#else

????????????????????????????// 在真機(jī)情況下

#endif

16.沙盒目錄文件

//獲取temp

#define kPathTemp NSTemporaryDirectory()

//獲取沙盒 Document

#define kPathDocument [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]

//獲取沙盒 Cache

#define kPathCache [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]

宏與const 的使用:

很多小伙伴在定義一個(gè)常量字符串儿惫,都會(huì)定義成一個(gè)宏,最典型的例子就是服務(wù)器的地址伸但。在此所有用宏定義常量字符的小伙伴以后就用const來定義吧肾请!為什么呢 ?我們看看:

宏的用法: 一般字符串抽成宏更胖,代碼抽成宏使用铛铁。

const用法:一般常用的字符串定義成const(對(duì)于常量字符串蘋果推薦我們使用const)。

宏與const區(qū)別:

1.編譯時(shí)刻不同却妨,宏屬于預(yù)編譯饵逐,const屬于編譯時(shí)刻

2.宏能定義代碼,const不能管呵,多個(gè)宏對(duì)于編譯會(huì)相對(duì)時(shí)間較長(zhǎng)梳毙,影響開發(fā)效率,調(diào)試過慢捐下,const只會(huì)編譯一次账锹,縮短編譯時(shí)間。

3.宏不會(huì)檢查錯(cuò)誤坷襟,const會(huì)檢查錯(cuò)誤

通過以上對(duì)比奸柬,我們以后在開發(fā)中如果定義一個(gè)常量字符串就用const,定義代碼就用宏婴程。我們來看看如何使用const廓奕,列舉實(shí)際項(xiàng)目使用方法如下圖:


***.h
****.m

在上圖本人只是簡(jiǎn)單定義幾個(gè)常量字符串,我們創(chuàng)建一個(gè)類只要在.h和.m中包含#import 就可以档叔,然后再.h文件聲明一個(gè)字符串桌粉,在.m中實(shí)現(xiàn)就可以了,最后把這個(gè)類導(dǎo)入PCH文件中衙四,我們就可任意的發(fā)揮啦铃肯!

如果喜歡的小伙伴請(qǐng)點(diǎn)一個(gè)吧,歡迎留言補(bǔ)充與給出不足之處传蹈!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末押逼,一起剝皮案震驚了整個(gè)濱河市步藕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挑格,老刑警劉巖咙冗,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異漂彤,居然都是意外死亡雾消,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門显歧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仪或,“玉大人,你說我怎么就攤上這事士骤》渡荆” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵拷肌,是天一觀的道長(zhǎng)到旦。 經(jīng)常有香客問我,道長(zhǎng)巨缘,這世上最難降的妖魔是什么添忘? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮若锁,結(jié)果婚禮上搁骑,老公的妹妹穿的比我還像新娘。我一直安慰自己又固,他們只是感情好仲器,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仰冠,像睡著了一般乏冀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洋只,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天辆沦,我揣著相機(jī)與錄音,去河邊找鬼识虚。 笑死肢扯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的担锤。 我是一名探鬼主播鹃彻,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼妻献!你這毒婦竟也來了蛛株?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤育拨,失蹤者是張志新(化名)和其女友劉穎谨履,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熬丧,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笋粟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了析蝴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片害捕。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖闷畸,靈堂內(nèi)的尸體忽然破棺而出尝盼,到底是詐尸還是另有隱情,我是刑警寧澤佑菩,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布盾沫,位于F島的核電站,受9級(jí)特大地震影響殿漠,放射性物質(zhì)發(fā)生泄漏赴精。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一绞幌、第九天 我趴在偏房一處隱蔽的房頂上張望蕾哟。 院中可真熱鬧,春花似錦莲蜘、人聲如沸谭确。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)琼富。三九已至,卻和暖如春庄新,著一層夾襖步出監(jiān)牢的瞬間鞠眉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工择诈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留械蹋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓羞芍,卻偏偏與公主長(zhǎng)得像哗戈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荷科,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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