IOS开发常用函数

1、获取本地的语言

[cpp]view plaincopy

+ (NSString *)getLocalLanguage

{

NSString *language = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];

returnlanguage;

}


2、获取Mac地址

[cpp]view plaincopy

// returns the local MAC address.

+ (NSString*) macAddress:(NSString*)interfaceNameOrNil

{

// uses en0 as the default interface name

NSString* interfaceName = interfaceNameOrNil;

if(interfaceName == nil)

{

interfaceName = @"en0";

}

intmib[6];

size_tlen;

char*buf;

unsignedchar*ptr;

structif_msghdr    *ifm;

structsockaddr_dl  *sdl;

mib[0] = CTL_NET;

mib[1] = AF_ROUTE;

mib[2] = 0;

mib[3] = AF_LINK;

mib[4] = NET_RT_IFLIST;

if((mib[5] = if_nametoindex([interfaceName UTF8String])) == 0)

{

printf("Error: if_nametoindex error\n");

returnNULL;

}

if(sysctl(mib, 6, NULL, &len, NULL, 0) < 0)

{

printf("Error: sysctl, take 1\n");

returnNULL;

}

if((buf = malloc(len)) == NULL)

{

printf("Could not allocate memory. error!\n");

returnNULL;

}

if(sysctl(mib, 6, buf, &len, NULL, 0) < 0)

{

printf("Error: sysctl, take 2");

free(buf);

returnNULL;

}

ifm = (structif_msghdr*) buf;

sdl = (structsockaddr_dl*) (ifm + 1);

ptr = (unsignedchar*) LLADDR(sdl);

NSString *outstring = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X",

*ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];

free(buf);

returnoutstring;

}

3、微博中获取时间差,(几天前,几小时前,几分钟前)

[cpp]view plaincopy

+ (NSString *) getTimeDiffString:(NSTimeInterval) timestamp

{

NSCalendar *cal = [NSCalendar currentCalendar];

NSDate *todate = [NSDate dateWithTimeIntervalSince1970:timestamp];

NSDate *today = [NSDate date];//当前时间

unsignedintunitFlag = NSDayCalendarUnit | NSHourCalendarUnit |NSMinuteCalendarUnit;

NSDateComponents *gap = [cal components:unitFlag fromDate:today toDate:todate options:0];//计算时间差

if(ABS([gap day]) > 0)

{

return[NSString stringWithFormat:@"%d天前", ABS([gap day])];

}elseif(ABS([gap hour]) > 0)

{

return[NSString stringWithFormat:@"%d小时前", ABS([gap hour])];

}else

{

return[NSString stringWithFormat:@"%d分钟前",  ABS([gap minute])];

}

}

4、计算字符串中单词的个数

[cpp]view plaincopy

+ (int)countWords:(NSString*)s

{

inti,n=[s length],l=0,a=0,b=0;

unichar c;

for(i=0;i

c=[s characterAtIndex:i];

if(isblank(c))

{

b++;

}elseif(isascii(c))

{

a++;

}else

{

l++;

}

}

if(a==0 && l==0)

{

return0;

}

returnl+(int)ceilf((float)(a+b)/2.0);

}

5、屏幕截图并保存到相册

[cpp]view plaincopy

+ (UIImage*)saveImageFromView:(UIView*)view

{

UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, view.layer.contentsScale);

[view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

returnimage;

}

+ (void)savePhotosAlbum:(UIImage *)image

{

UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), nil);

}

+ (void)saveImageFromToPhotosAlbum:(UIView*)view

{

UIImage *image = [self saveImageFromView:view];

[self savePhotosAlbum:image];

}

- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void*) contextInfo

{

NSString *message;

NSString *title;

if(!error) {

title = @"成功提示";

message = @"成功保存到相";

}else{

title = @"失败提示";

message = [error description];

}

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title

message:message

delegate:nil

cancelButtonTitle:@"知道了"

otherButtonTitles:nil];

[alert show];

[alert release];

}

5、获取本月,本周,本季度第一天的时间戳

[html]view plaincopy

+ (unsigned long long)getFirstDayOfWeek:(unsigned long long)timestamp

{

NSDate *now= [NSDate dateWithTimeIntervalSince1970:timestamp];

NSCalendar *cal= [NSCalendar currentCalendar];

NSDateComponents *comps= [cal

components:NSYearCalendarUnit| NSMonthCalendarUnit| NSWeekCalendarUnit | NSWeekdayCalendarUnit |NSWeekdayOrdinalCalendarUnit

fromDate:now];

if (comps.weekday<2)

{

comps.week=comps.week-1;

}

comps.weekday=2;

NSDate *firstDay= [cal dateFromComponents:comps];

return [firstDay timeIntervalSince1970];

}

+ (unsigned long long)getFirstDayOfQuarter:(unsigned long long)timestamp

{

NSDate *now= [NSDate dateWithTimeIntervalSince1970:timestamp];

NSCalendar *cal= [NSCalendar currentCalendar];

NSDateComponents *comps= [cal

components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit

fromDate:now];

if (comps.month<=3)

{

comps.month=1;

}

else if(comps.month<=6)

{

comps.month=4;

}

else if(comps.month<=9)

{

comps.month=7;

}

else if(comps.month<=12)

{

comps.month=10;

}

comps.day=1;

NSDate *firstDay= [cal dateFromComponents:comps];

return [firstDay timeIntervalSince1970]*1000;

}

+ (unsigned long long)getFirstDayOfMonth:(unsigned long long)timestamp

{

NSDate *now= [NSDate dateWithTimeIntervalSince1970:timestamp/1000];

NSCalendar *cal= [NSCalendar currentCalendar];

NSDateComponents *comps= [cal

components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit

fromDate:now];

comps.day=1;

NSDate *firstDay= [cal dateFromComponents:comps];

return [firstDay timeIntervalSince1970]*1000;

}

6、判断是否越狱

[cpp]view plaincopy

staticconstchar* __jb_app = NULL;

+ (BOOL)isJailBroken

{

staticconstchar* __jb_apps[] =

{

"/Application/Cydia.app",

"/Application/limera1n.app",

"/Application/greenpois0n.app",

"/Application/blackra1n.app",

"/Application/blacksn0w.app",

"/Application/redsn0w.app",

NULL

};

__jb_app = NULL;

// method 1

for(inti = 0; __jb_apps[i]; ++i )

{

if( [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithUTF8String:__jb_apps[i]]] )

{

__jb_app = __jb_apps[i];

returnYES;

}

}

// method 2

if( [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"] )

{

returnYES;

}

// method 3

if( 0 == system("ls") )

{

returnYES;

}

returnNO;

}

+ (NSString *)jailBreaker

{

if( __jb_app )

{

return[NSString stringWithUTF8String:__jb_app];

}

else

{

return@"";

}

}

7、定义单例的宏

[cpp]view plaincopy

#undef  AS_SINGLETON

#define AS_SINGLETON( __class ) \

+ (__class *)sharedInstance;

#undef  DEF_SINGLETON

#define DEF_SINGLETON( __class ) \

+ (__class *)sharedInstance \

{ \

staticdispatch_once_t once; \

static__class * __singleton__; \

dispatch_once( &once, ^{ __singleton__ = [[__class alloc] init]; } ); \

return__singleton__; \

}

8、网络状态检测

[cpp]view plaincopy

- (void)reachabilityChanged:(NSNotification *)note {

Reachability* curReach = [note object];

NSParameterAssert([curReach isKindOfClass: [Reachabilityclass]]);

NetworkStatus status = [curReach currentReachabilityStatus];

if(status == NotReachable)

{

}

elseif(status == kReachableViaWiFi)

{

}

elseif(status == kReachableViaWWAN)

{

}

}

- (void)setNetworkNotification

{

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(reachabilityChanged:)

name: kReachabilityChangedNotification

object: nil];

_hostReach = [[Reachability reachabilityWithHostName:@"http://www.baidu.com"] retain];

[_hostReach startNotifier];

}

9、添加推送消息

[cpp]view plaincopy

- (void)setPushNotification

{

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound];

}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

NSLog(@"获取设备的deviceToken: %@", deviceToken);

}

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error{

NSLog(@"Failed to get token, error: %@", error);

}

10、16进制颜色转UIColor

[cpp]view plaincopy

+ (UIColor *)colorWithHex:(NSString *)hex {

// Remove `#` and `0x`

if([hex hasPrefix:@"#"]) {

hex = [hex substringFromIndex:1];

}elseif([hex hasPrefix:@"0x"]) {

hex = [hex substringFromIndex:2];

}

// Invalid if not 3, 6, or 8 characters

NSUInteger length = [hex length];

if(length != 3 && length != 6 && length != 8) {

returnnil;

}

// Make the string 8 characters long for easier parsing

if(length == 3) {

NSString *r = [hex substringWithRange:NSMakeRange(0, 1)];

NSString *g = [hex substringWithRange:NSMakeRange(1, 1)];

NSString *b = [hex substringWithRange:NSMakeRange(2, 1)];

hex = [NSString stringWithFormat:@"%@%@%@%@%@%@ff",

r, r, g, g, b, b];

}elseif(length == 6) {

hex = [hex stringByAppendingString:@"ff"];

}

CGFloat red = [[hex substringWithRange:NSMakeRange(0, 2)] _hexValue] / 255.0f;

CGFloat green = [[hex substringWithRange:NSMakeRange(2, 2)] _hexValue] / 255.0f;

CGFloat blue = [[hex substringWithRange:NSMakeRange(4, 2)] _hexValue] / 255.0f;

CGFloat alpha = [[hex substringWithRange:NSMakeRange(6, 2)] _hexValue] / 255.0f;

return[UIColor colorWithRed:red green:green blue:blue alpha:alpha];

}

你可能感兴趣的:(IOS开发常用函数)