iOS宏定義

1 weakself和strongself

#ifndef weakify

#if DEBUG

#ifhas_feature(objc_arc)

#define weakify(object) autoreleasepool{} __weak __typeof(object) weak####object = object;

#else

#define weakify(object) autoreleasepool{} __block __typeof_(object) block####object = object;

#endif

#else

#if __has_feature(objc_arc)

#define weakify(object) try{}@finally{} {} __weak __typeof_(object) weak####object = object;

#else

#define weakify(object) try{}@finally{} {} __block __typeof_(object) block##_##object = object;

#endif

#endif

#endif

#ifndef strongify

#if DEBUG

#ifhas_feature(objc_arc)

#define strongify(object) autoreleasepool{} __typeof(object) object = weak####object;

#else

#define strongify(object) autoreleasepool{} __typeof_(object) object = block####object;

#endif

#else

#if __has_feature(objc_arc)

#define strongify(object) try{}@finally{} __typeof_(object) object = weak####object;

#else

#define strongify(object) try{}@finally{} __typeof_(object) object = block##_##object;

#endif

#endif

#endif

2 獲取設備大小

#define NavigationBar_HEIGHT 44

3 獲取屏幕 寬度伙狐、高度

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

#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)

4 打印日志

#ifdef DEBUG

define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt),PRETTY_FUNCTION,LINE, ##VA_ARGS);

#else

define DLog(...)

#endif

5 重寫NSLog,Debug模式下打印日志和當前行數(shù)

#if DEBUG

#define NSLog(FORMAT, ...) fprintf(stderr,"\nfunction:%s line:%d content:%s\n",FUNCTION,LINE, [NSString stringWithFormat:FORMAT, ##VA_ARGS] UTF8String]);

#else

#define NSLog(FORMAT, ...) nil

#endif

6 是否是ipad

#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

7 獲取系統(tǒng)版本

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

#define CurrentSystemVersion [UIDevice currentDevice] systemVersion]

8 獲取當前系統(tǒng)的語言

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

9 判斷設備的操做系統(tǒng)是不是ios7

#define IOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0]

10 判斷是真機還是模擬器

#if TARGET_OS_IPHONE

//iPhone Device

#endif

#if TARGET_IPHONE_SIMULATOR

//iPhone Simulator

#endif

11 顏色值轉換

// rgb顏色轉換(16進制->10進制)

#define UIColorFromRGB(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]

//帶有RGBA的顏色設置

#define COLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]

// 獲取RGB顏色

#define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]

#define RGB(r,g,b) RGBA(r,g,b,1.0f)

//背景色

#define BACKGROUND_COLOR [UIColor colorWithRed:242.0/255.0 green:236.0/255.0 blue:231.0/255.0 alpha:1.0]

//清除背景色

#define CLEARCOLOR [UIColor clearColor]

12 由角度獲取弧度 有弧度獲取角度

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

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

13 單例

//單例化一個類

#define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \

\

static classname *shared##classname = nil; \

\

(classname *)shared##classname \ { \@synchronized(self) \ { \ if (shared##classname == nil) \ { \ shared##classname = [self alloc] init]; \ } \ } \ \ return shared##classname; \ } \ \

(id)allocWithZone:(NSZone *)zone \ { \@synchronized(self) \ { \ if (shared##classname == nil) \ { \ shared##classname = [super allocWithZone:zone]; \ return shared##classname; \ } \ } \ \ return nil; \ } \ \

(id)copyWithZone:(NSZone *)zone \ { \ return self; \ } 14 沙盒目錄文件 //獲取temp #define kPathTemp NSTemporaryDirectory() //獲取沙盒 Document #define kPathDocument [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] //獲取沙盒 Cache #define kPathCache [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject] 15 設置 view 圓角和邊框 #define LRViewBorderRadius(View, Radius, Width, Color)\

\

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

[View.layer setMasksToBounds:YES];\

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

[View.layer setBorderColor:[Color CGColor]]

16 .判斷當前的iPhone設備/系統(tǒng)版本

//判斷是否為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 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)版本

#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))



#ifdef ITTDEBUG

#define ITTDPRINT(xx, ...)? NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)

#else

#define ITTDPRINT(xx, ...)? ((void)0)

#endif

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市氓仲,隨后出現(xiàn)的幾起案子坦仍,更是在濱河造成了極大的恐慌鳍烁,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件繁扎,死亡現(xiàn)場離奇詭異幔荒,居然都是意外死亡,警方通過查閱死者的電腦和手機梳玫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門爹梁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人提澎,你說我怎么就攤上這事姚垃。” “怎么了盼忌?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵积糯,是天一觀的道長。 經常有香客問我谦纱,道長看成,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任跨嘉,我火速辦了婚禮川慌,結果婚禮上,老公的妹妹穿的比我還像新娘祠乃。我一直安慰自己梦重,他們只是感情好,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布亮瓷。 她就那樣靜靜地躺著琴拧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寺庄。 梳的紋絲不亂的頭發(fā)上艾蓝,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天力崇,我揣著相機與錄音斗塘,去河邊找鬼。 笑死亮靴,一個胖子當著我的面吹牛馍盟,可吹牛的內容都是我干的。 我是一名探鬼主播茧吊,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贞岭,長吁一口氣:“原來是場噩夢啊……” “哼八毯!你這毒婦竟也來了?” 一聲冷哼從身側響起瞄桨,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤话速,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芯侥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泊交,經...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年廓俭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唉工。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡研乒,死狀恐怖,靈堂內的尸體忽然破棺而出淋硝,到底是詐尸還是另有隱情雹熬,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布奖地,位于F島的核電站橄唬,受9級特大地震影響,放射性物質發(fā)生泄漏参歹。R本人自食惡果不足惜仰楚,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望犬庇。 院中可真熱鬧僧界,春花似錦、人聲如沸臭挽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欢峰。三九已至葬荷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纽帖,已是汗流浹背宠漩。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留懊直,地道東北人扒吁。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像室囊,于是被迫代替她去往敵國和親雕崩。 傳聞我的和親對象是個殘疾皇子魁索,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內容