ios中常用的宏定義

/**獲取屏幕寬度與高度 導航,tabbar高度*/

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


#define SCREEN_HEIGHT ?[UIScreen mainScreen].bounds.size.height

#define NavBarHeight? ? ? ? ? ? ? ? ? ? ? ? self.navigationController.navigationBar.bounds.size.height

#define TabBarHeight? ? ? ? ? ? ? ? ? ? ? ? self.tabBarController.tabBar.bounds.size.height

#define ViewWidth(v)? ? ? ? ? ? ? ? ? ? ? ? v.frame.size.width

#define ViewHeight(v)? ? ? ? ? ? ? ? ? ? ? v.frame.size.height

#define ViewX(v)? ? ? ? ? ? ? ? ? ? ? ? ? ? v.frame.origin.x

#define ViewY(v)? ? ? ? ? ? ? ? ? ? ? ? ? ? v.frame.origin.y

/**獲取通知中心*/

#define?ZSNotificationCenter ?[NSNotificationCenter defaultCenter]

/**顏色*/

#define ZSRandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0]//隨機色

#define ZSRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]//rgb

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

#define ZSlearColor [UIColor clearColor]//透明色

#define zsColorNavBG [UIColor colorWithHexString:@"0xF8F8F8"]

#define zsColorNavTitle [UIColor colorWithHexString:@"0x323A45"]

#define zsColorTableBG [UIColor colorWithHexString:@"0xFFFFFF"]

#define zsColorTableSectionBg [UIColor colorWithHexString:@"0xF2F4F6"]

#define zsColor222 [UIColor colorWithHexString:@"0x222222"]

#define zsColor666 [UIColor colorWithHexString:@"0x666666"]

#define zsColor999 [UIColor colorWithHexString:@"0x999999"]

#define zsColorDDD [UIColor colorWithHexString:@"0xDDDDDD"]

#define zsColorCCC [UIColor colorWithHexString:@"0xCCCCCC"]

#define zsColorBrandGreen [UIColor colorWithHexString:@"0x3BBD79"]

#define zsColorBrandRed [UIColor colorWithHexString:@"0xFF5846"]

#define YAXMainColor [UIColor colorWithHexString:@"0x29B2BB"] //主題色

//#define YAXMainColor ZSRGBColor(225, 53, 58) //主題色

#define YAXBacColor ZSRGBColor(240, 240, 240) //背景灰色

#define YAXGreen ZSRGBColor(105,176,45)//綠色

#define width(a) (SCREEN_WIDTH/375)*a

#define height(a) (SCREEN_HEIGHT/667)*a

#define YAXButton_HEIGHT 44

#define YAXMAIGN 15

#define YAXHMAIGN width(20)

#define YAXSMAIGN height(20)

#define YAXLMAGIN 10

#define YAXPaddingLeftW width(15)

#define ZSStrFormat(a,b) [NSString stringWithFormat:@"%@%@",a,b]

#define FONT(F) [UIFont systemFontOfSize:F]

#define? zsBackButtonFontSize FONT(16) //字體

#define? zsNavTitleFontSize FONT(18)

#define? zsTitieFontSize FONT(14)

#define? zsTipFont FONT(15)

//圓角view

#define CORNERRADIUS(view,radiu) \

view.layer.cornerRadius = radiu;\

view.layer.masksToBounds = YES;\

//默認圖片

#define IMAGE_PLACEHOLDER [UIImage imageNamed:@"loadImage"]

#define NavMAXY CGRectGetMaxY(self.navigationController.navigationBar.frame)

#define TabBarY self.tabBarController.tabBar.y

/**Log*/

#ifdef DEBUG

#define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函數名:%s]\n" "[行號:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);

#define DeBugLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

#define NSLog(...) NSLog(__VA_ARGS__);

#define MyNSLog(FORMAT, ...) fprintf(stderr,"[%s]:[line %d行] %s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);

#else

#define DLog(...)

#define DeBugLog(...)

#define NSLog(...)

#define MyNSLog(FORMAT, ...)

#endif

/**強弱引用? ? http://cc.cocimg.com/api/uploads/20160712/1468319802739618.png*/

#define ZSWeakSelf(type)? __weak typeof(type) weak##type = type;? //弱

#define ZSStrongSelf(type)? __strong typeof(type) type = weak##type;? //強

/**view邊框*/

#define ZSViewBorderRadius(View, Radius, Width, Color)\

\

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

[View.layer setMasksToBounds:YES];\

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

[View.layer setBorderColor:[Color CGColor]]

/**alertView*/

#define zsTipAlert(_S_, ...)? ? [[[UIAlertView alloc] initWithTitle:@"提示" message:[NSString stringWithFormat:(_S_), ##__VA_ARGS__] delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles:nil] show]

/**判斷當前的iPhone設備/系統版本*/

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

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

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

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

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

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

#define IOS_SYSTEM_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]//獲取系統版本

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

#define kDevice_Is_iPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)

#define kDevice_Is_iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)

#define kDevice_Is_iPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)

#define kDevice_Is_iPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)

#define kScaleFrom_iPhone5_Desgin(_X_) (_X_ * (SCREEN_WIDTH/320))

/**判斷真機還是模擬器*/

#if TARGET_OS_IPHONE//iPhone Device

#endif

#if TARGET_IPHONE_SIMULATOR//iPhone Simulator

#endif

//? ? 主要單例

#define UserDefaults? ? ? ? ? ? ? ? ? ? ? ? [NSUserDefaults standardUserDefaults]

#define NotificationCenter? ? ? ? ? ? ? ? ? [NSNotificationCenter defaultCenter]

#define SharedApplication? ? ? ? ? ? ? ? ? [UIApplication sharedApplication]

#define Bundle? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [NSBundle mainBundle]

#define MainScreen? ? ? ? ? ? ? ? ? ? ? ? ? [UIScreen mainScreen]

/**沙盒目錄文件*/

#define PathTemp NSTemporaryDirectory()//獲取temp

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

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

/**GCD 的宏定義*/

#define ZSDISPATCH_ONCE_BLOCK(onceBlock) static dispatch_once_t onceToken; dispatch_once(&onceToken, onceBlock);//GCD - 一次性執行

#define ZSDISPATCH_MAIN_THREAD(mainQueueBlock) dispatch_async(dispatch_get_main_queue(), mainQueueBlock);//GCD - 在Main線程上運行

#define ZSDISPATCH_GLOBAL_QUEUE_DEFAULT(globalQueueBlock) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), globalQueueBlock);//GCD - 開啟異步線程

//class轉string

#define StringClass(Class) NSStringFromClass([Class class])

//防止空值賦值

#define NotNullStr(obj,nullObj) obj ? \

([obj isKindOfClass:[NSString class]] ? obj : \

([obj isKindOfClass:[NSNumber class]] ? [(NSNumber *)obj stringValue] : nullObj)) : \

nullObj

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容

  • 來源于CocoaChina 在工作中, 很多小伙伴都會在PCH文件定義一些常用的宏,但是又怕寫這些簡單的宏浪費時間...
    iOS學末閱讀 828評論 3 7
  • iOS開發過程中,使用的一些常用宏定義 字符串是否為空#define kStringIsEmpty(str) ([...
    goyohol閱讀 5,376評論 30 85
  • 『導言』 iOS 開發常用宏總結的相關資料,需要的朋友可以參考下。文章中有不足之處請指正!謝謝! OC對象判斷是否...
    隨心吧閱讀 878評論 0 16
  • 定義了一些常用的宏,寫代碼的時候用起來挺方便的,添加了pch文件,設置了相對路徑;設置pch文件相對路徑的方法:設...
    SnailLi閱讀 1,709評論 0 1
  • #ifndef iOS_Constants_h #define iOS_Constants_h /* ******...
    莫離_焱閱讀 282評論 0 1