Created
November 12, 2013 02:52
-
-
Save clooth/7424679 to your computer and use it in GitHub Desktop.
Objective-C Macros
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Constants | |
#define APP_VERSION [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"] | |
#define APP_NAME [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"] | |
#define APP_DELEGATE [[UIApplication sharedApplication] delegate] | |
#define USER_DEFAULTS [NSUserDefaults standardUserDefaults] | |
#define APPLICATION [UIApplication sharedApplication] | |
#define BUNDLE [NSBundle mainBundle] | |
#define MAIN_SCREEN [UIScreen mainScreen] | |
#define FILE_MANAGER [NSFileManager defaultManager] | |
#define DOCUMENTS_DIR [[FILE_MANAGER URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] | |
#define NAV_BAR self.navigationController.navigationBar | |
#define TAB_BAR self.tabBarController.tabBar | |
#define DATE_COMPONENTS NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit | |
#define IS_PAD ([[UIDevice currentDevice] interfaceIdiom] == UIUserInterfaceIdiomPad) | |
// Props | |
#define ScreenWidth [MAIN_SCREEN bounds].size.width | |
#define ScreenHeight [MAIN_SCREEN bounds].size.height | |
#define NavBarHeight self.navigationController.navigationBar.bounds.size.height | |
#define TabBarHeight self.tabBarController.tabBar.bounds.size.height | |
#define SelfBoundsWidth self.bounds.size.width | |
#define SelfBoundsHeight self.bounds.size.height | |
#define SelfFrameWidth self.frame.size.width | |
#define SelfFrameHeight self.frame.size.height | |
#define SelfViewBoundsWidth self.view.bounds.size.width | |
#define SelfViewBoundsHeight self.view.bounds.size.height | |
#define SelfViewFrameWidth self.view.frame.size.width | |
#define SelfViewFrameHeight self.view.frame.size.height | |
#define SelfX self.frame.origin.x | |
#define SelfY self.frame.origin.y | |
#define SelfViewX self.view.frame.origin.x | |
#define SelfViewY self.view.frame.origin.y | |
// Utils | |
#define clamp(n,min,max) ((n < min) ? min : (n > max) ? max : n) | |
#define distance(a,b) sqrtf((a-b) * (a-b)) | |
#define point(x,y) CGPointMake(x, y) | |
#define append(a,b) [a stringByAppendingString:b]; | |
#define fileExistsAtPath(path) [FILE_MANAGER fileExistsAtPath: path] | |
#define SEL | |
// Colors | |
#define hex_rgba(c) [UIColor colorWithRed:((c>>24)&0xFF)/255.0 green:((c>>16)&0xFF)/255.0 blue:((c>>8)&0xFF)/255.0 alpha:((c)&0xFF)/255.0] | |
#define hex_rgb(c) [UIColor colorWithRed:((c>>16)&0xFF)/255.0 green:((c>>8)&0xFF)/255.0 blue:((c)&0xFF)/255.0 alpha:1.0] | |
// Views Getters | |
#define frameWidth(v) v.frame.size.width | |
#define frameHeight(v) v.frame.size.height | |
#define boundsWidth(v) v.bounds.size.width | |
#define boundsHeight(v) v.bounds.size.height | |
#define posX(v) v.frame.origin.x | |
#define posY(v) v.frame.origin.y | |
// View Setters | |
#define setPosX(v,x) v.frame = CGRectMake(x, posY(v), frameWidth(v), frameHeight(v)) | |
#define setPosY(v,y) v.frame = CGRectMake(posX(v), y, frameWidth(v), frameHeight(v)) | |
#define setFramePosition(v,x,y) v.frame = CGRectMake(x, y, frameWidth(v), frameHeight(v)) | |
#define setFrameSize(v,w,h) v.frame = CGRectMake(posX(v), posY(v), w, h) | |
#define setBoundsPosition(v,x,y) v.bounds = CGRectMake(x, y, boundsWidth(v), boundsHeight(v)) | |
#define setBoundsSize(v,w,h) v.bounds = CGRectMake(posX(v), posY(v), w, h) | |
// View Transformations | |
#define rotate(v,r) v.transform = CGAffineTransformMakeRotation(r / 180.0 * M_PI) | |
#define scale(v,sx,sy) v.transform = CGAffineTransformMakeScale(sx, sy) | |
#define animate(dur,curve,anims) [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:dur]; [UIView setAnimationCurve:curve]; anims; [UIView commitAnimations] | |
// Notifications | |
#define addEventListener(id,s,n,o) [[NSNotificationCenter defaultCenter] addObserver:id selector:s name:n object:o] | |
#define removeEventListener(id,n,o) [[NSNotificationCenter defaultCenter] removeObserver:id name:n object:o] | |
#define dispatchEvent(n,o) [[NSNotificationCenter defaultCenter] postNotificationName:n object:o] | |
#define dispatchEventWithData(n,o,d) [[NSNotificationCenter defaultCenter] postNotificationName:n object:o userInfo:d] | |
// User Defaults | |
#define boolForKey(k) [USER_DEFAULTS boolForKey:k] | |
#define floatForKey(k) [USER_DEFAULTS floatForKey:k] | |
#define integerForKey(k) [USER_DEFAULTS integerForKey:k] | |
#define objectForKey(k) [USER_DEFAULTS objectForKey:k] | |
#define stringForKey(k) [USER_DEFAULTS stringForKey:k] | |
#define doubleForKey(k) [USER_DEFAULTS doubleForKey:k] | |
#define urlForKey(k) [USER_DEFAULTS urlForKey:k] | |
#define setBoolForKey(v, k) [USER_DEFAULTS setBool:v forKey:k] | |
#define setFloatForKey(v, k) [USER_DEFAULTS setFloat:v forKey:k] | |
#define setIntegerForKey(v, k) [USER_DEFAULTS setInteger:v forKey:k] | |
#define setObjectForKey(v, k) [USER_DEFAULTS setObject:v forKey:k] | |
#define setStringForKey(v, k) [USER_DEFAULTS setString:v forKey:k] | |
#define setDoubleForKey(v, k) [USER_DEFAULTS setDouble:v forKey:k] | |
#define setURLForKey(v, k) [USER_DEFAULTS setURL:v forKey:k] | |
#define saveUserDefaults() [USER_DEFAULTS synchronize] | |
// NSLog only in debug mode | |
#if DEBUG == 1 | |
#define Log(...) NSLog(__VA_ARGS__) | |
#else | |
#define Log(...) do {} while (0) | |
#endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment