iOS開發常用到的宏定義

/#ifndef?MacroDefinition_h

#define?MacroDefinition_h

//-------------------獲取設備大小-------------------------

//NavBar高度

#define?NavigationBar_HEIGHT?44

//獲取屏幕?寬度、高度

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

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

//-------------------獲取設備大小-------------------------

//-------------------打印日志-------------------------

//DEBUG??模式下打印日志,當前行

#ifdef?DEBUG

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

#else

#???define?DLog(...)

#endif

//重寫NSLog,Debug模式下打印日志和當前行數

#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

//DEBUG??模式下打印日志,當前行?并彈出一個警告

#ifdef?DEBUG

#???define?ULog(fmt,?...)??{?UIAlertView?*alert?=?[[UIAlertView?alloc]?initWithTitle:[NSString?stringWithFormat:@"%s\n?[Line?%d]?",?__PRETTY_FUNCTION__,?__LINE__]?message:[NSString?stringWithFormat:fmt,?##__VA_ARGS__]??delegate:nil?cancelButtonTitle:@"Ok"?otherButtonTitles:nil];?[alert?show];?}

#else

#???define?ULog(...)

#endif

#define?ITTDEBUG

#define?ITTLOGLEVEL_INFO?????10

#define?ITTLOGLEVEL_WARNING??3

#define?ITTLOGLEVEL_ERROR????1

#ifndef?ITTMAXLOGLEVEL

#ifdef?DEBUG

#define?ITTMAXLOGLEVEL?ITTLOGLEVEL_INFO

#else

#define?ITTMAXLOGLEVEL?ITTLOGLEVEL_ERROR

#endif

#endif

//?The?general?purpose?logger.?This?ignores?logging?levels.

#ifdef?ITTDEBUG

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

#else

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

#endif

//?Prints?the?current?method's?name.

#define?ITTDPRINTMETHODNAME()?ITTDPRINT(@"%s",?__PRETTY_FUNCTION__)

//?Log-level?based?logging?macros.

#if?ITTLOGLEVEL_ERROR?<=?ITTMAXLOGLEVEL

#define?ITTDERROR(xx,?...)??ITTDPRINT(xx,?##__VA_ARGS__)

#else

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

#endif

#if?ITTLOGLEVEL_WARNING?<=?ITTMAXLOGLEVEL

#define?ITTDWARNING(xx,?...)??ITTDPRINT(xx,?##__VA_ARGS__)

#else

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

#endif

#if?ITTLOGLEVEL_INFO?<=?ITTMAXLOGLEVEL

#define?ITTDINFO(xx,?...)??ITTDPRINT(xx,?##__VA_ARGS__)

#else

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

#endif

#ifdef?ITTDEBUG

#define?ITTDCONDITIONLOG(condition,?xx,?...)?{?if?((condition))?{?\

ITTDPRINT(xx,?##__VA_ARGS__);?\

}?\

}?((void)0)

#else

#define?ITTDCONDITIONLOG(condition,?xx,?...)?((void)0)

#endif

#define?ITTAssert(condition,?...)???????????????????????????????????????\

do{??????????????????????????????????????????????????????????????????????\

if(!(condition))?{?????????????????????????????????????????????????????\

[[NSAssertionHandler?currentHandler]??????????????????????????????????\

handleFailureInFunction:[NSString?stringWithUTF8String:__PRETTY_FUNCTION__]?\

file:[NSString?stringWithUTF8String:__FILE__]??\

lineNumber:__LINE__??????????????????????????????????\

description:__VA_ARGS__];?????????????????????????????\

}???????????????????????????????????????????????????????????????????????\

}while(0)

//---------------------打印日志--------------------------

//----------------------系統----------------------------

//獲取系統版本

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

#define?CurrentSystemVersion?[[UIDevice?currentDevice]?systemVersion]

//獲取當前語言

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

//判斷是否?Retina屏、設備是否%fhone?5、是否是iPad

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

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

#define?isPad?(UI_USER_INTERFACE_IDIOM()?==?UIUserInterfaceIdiomPad)

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

#if?TARGET_OS_IPHONE

//iPhone?Device

#endif

#if?TARGET_IPHONE_SIMULATOR

//iPhone?Simulator

#endif

//檢查系統版本

#define?SYSTEM_VERSION_EQUAL_TO(v)??????????????????([[[UIDevice?currentDevice]?systemVersion]?compare:v?options:NSNumericSearch]?==?NSOrderedSame)

#define?SYSTEM_VERSION_GREATER_THAN(v)??????????????([[[UIDevice?currentDevice]?systemVersion]?compare:v?options:NSNumericSearch]?==?NSOrderedDescending)

#define?SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)??([[[UIDevice?currentDevice]?systemVersion]?compare:v?options:NSNumericSearch]?!=?NSOrderedAscending)

#define?SYSTEM_VERSION_LESS_THAN(v)?????????????????([[[UIDevice?currentDevice]?systemVersion]?compare:v?options:NSNumericSearch]?==?NSOrderedAscending)

#define?SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)?????([[[UIDevice?currentDevice]?systemVersion]?compare:v?options:NSNumericSearch]?!=?NSOrderedDescending)

//----------------------系統----------------------------

//----------------------內存----------------------------

//使用ARC和不使用ARC

#if?__has_feature(objc_arc)

//compiling?with?ARC

#else

//?compiling?without?ARC

#endif

#pragma?mark?-?common?functions

#define?RELEASE_SAFELY(__POINTER)?{?[__POINTER?release];?__POINTER?=?nil;?}

//釋放一個對象

#define?SAFE_DELETE(P)?if(P)?{?[P?release],?P?=?nil;?}

#define?SAFE_RELEASE(x)?[x?release];x=nil

//----------------------內存----------------------------

//----------------------圖片----------------------------

//讀取本地圖片

#define?LOADIMAGE(file,ext)?[UIImage?imageWithContentsOfFile:[[NSBundle?mainBundle]pathForResource:file?ofType:ext]]

//定義UIImage對象

#define?IMAGE(A)?[UIImage?imageWithContentsOfFile:[[NSBundle?mainBundle]?pathForResource:A?ofType:nil]]

//定義UIImage對象

#define?ImageNamed(_pointer)?[UIImage?imageNamed:[UIUtil?imageName:_pointer]]

//建議使用前兩種宏定義,性能高于后者

//----------------------圖片----------------------------

//----------------------顏色類---------------------------

//?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]

#pragma?mark?-?color?functions

#define?RGBCOLOR(r,g,b)?[UIColor?colorWithRed:(r)/255.0f?green:(g)/255.0f?blue:(b)/255.0f?alpha:1]

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

//----------------------顏色類--------------------------

//----------------------其他----------------------------

//方正黑體簡體字體定義

#define?FONT(F)?[UIFont?fontWithName:@"FZHTJW--GB1-0"?size:F]

//定義一個API

#define?APIURL????????????????@"http://xxxxx/"

//登陸API

#define?APILogin??????????????[APIURL?stringByAppendingString:@"Login"]

//設置View的tag屬性

#define?VIEWWITHTAG(_OBJECT,?_TAG)????[_OBJECT?viewWithTag?:?_TAG]

//程序的本地化,引用國際化的文件

#define?MyLocal(x,?...)?NSLocalizedString(x,?nil)

//G-C-D

#define?BACK(block)?dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,?0),?block)

#define?MAIN(block)?dispatch_async(dispatch_get_main_queue(),block)

//NSUserDefaults?實例化

#define?USER_DEFAULT?[NSUserDefaults?standardUserDefaults]

//由角度獲取弧度?有弧度獲取角度

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

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

//單例化一個類

#define?SYNTHESIZE_SINGLETON_FOR_CLASS(classname)?\

\

staticclassname?*shared##classname?=?nil;?\

\

+?(classname?*)shared##classname?\

{?\

@synchronized(self)?\

{?\

if(shared##classname?==?nil)?\

{?\

shared##classname?=?[[self?alloc]?init];?\

}?\

}?\

\

returnshared##classname;?\

}?\

\

+?(id)allocWithZone:(NSZone?*)zone?\

{?\

@synchronized(self)?\

{?\

if(shared##classname?==?nil)?\

{?\

shared##classname?=?[super?allocWithZone:zone];?\

returnshared##classname;?\

}?\

}?\

\

returnnil;?\

}?\

\

-?(id)copyWithZone:(NSZone?*)zone?\

{?\

returnself;?\

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • iOS開發過程中使用一些常用的宏可以提高開發效率,提高代碼的重用性;將這些宏放到一個頭文件里然后再放到工程中的-P...
    小地閱讀 372評論 0 0
  • iOS開發過程中,使用的一些常用宏定義 字符串是否為空#define kStringIsEmpty(str) ([...
    goyohol閱讀 5,380評論 30 85
  • #ifndef iOS_Constants_h #define iOS_Constants_h /* ******...
    莫離_焱閱讀 283評論 0 1
  • 厚積薄發 溫麻新姿 守住寧靜,讓一切歸于心境,不因喜歡而執著,不因虛幻而煩憂。守住寧靜,讓一切融于慈悲,不因...
    溫麻新姿A閱讀 396評論 0 7
  • 周筆暢《longing for U》MV,曲風跟韓國歌曲很相似。開始時娓娓低訴,高潮處高亢表達內心的轉變。Bibi...
    身體棒棒閱讀 261評論 2 0