您的位置:首页 > 移动开发 > IOS开发

IOS开发常用函数

2016-03-25 15:47 453 查看
1、获取本地的语言

[cpp] view
plain copy

+ (NSString *)getLocalLanguage

{

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

return language;

}

2、获取Mac地址

[cpp] view
plain copy

// returns the local MAC address.

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

{

// uses en0 as the default interface name

NSString* interfaceName = interfaceNameOrNil;

if (interfaceName == nil)

{

interfaceName = @"en0";

}

int mib[6];

size_t len;

char *buf;

unsigned char *ptr;

struct if_msghdr *ifm;

struct sockaddr_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");

return NULL;

}

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

{

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

return NULL;

}

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

{

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

return NULL;

}

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

{

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

free(buf);

return NULL;

}

ifm = (struct if_msghdr*) buf;

sdl = (struct sockaddr_dl*) (ifm + 1);

ptr = (unsigned char*) 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);

return outstring;

}

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

[cpp] view
plain copy

+ (NSString *) getTimeDiffString:(NSTimeInterval) timestamp

{

NSCalendar *cal = [NSCalendar currentCalendar];

NSDate *todate = [NSDate dateWithTimeIntervalSince1970:timestamp];

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

unsigned int unitFlag = 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])];

}else if(ABS([gap hour]) > 0)

{

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

}else

{

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

}

}

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

[cpp] view
plain copy

+ (int)countWords:(NSString*)s

{

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

unichar c;

for(i=0;i<n;i++){

c=[s characterAtIndex:i];

if(isblank(c))

{

b++;

}else if(isascii(c))

{

a++;

}else

{

l++;

}

}

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

{

return 0;

}

return l+(int)ceilf((float)(a+b)/2.0);

}

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

[cpp] view
plain copy

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

{

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

[view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return image;

}

+ (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
plain copy

+ (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
plain copy

static const char * __jb_app = NULL;

+ (BOOL)isJailBroken

{

static const char * __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 ( int i = 0; __jb_apps[i]; ++i )

{

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

{

__jb_app = __jb_apps[i];

return YES;

}

}

// method 2

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

{

return YES;

}

// method 3

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

{

return YES;

}

return NO;

}

+ (NSString *)jailBreaker

{

if ( __jb_app )

{

return [NSString stringWithUTF8String:__jb_app];

}

else

{

return @"";

}

}

7、定义单例的宏

[cpp] view
plain copy

#undef AS_SINGLETON

#define AS_SINGLETON( __class ) \

+ (__class *)sharedInstance;

#undef DEF_SINGLETON

#define DEF_SINGLETON( __class ) \

+ (__class *)sharedInstance \

{ \

static dispatch_once_t once; \

static __class * __singleton__; \

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

return __singleton__; \

}

8、网络状态检测

[cpp] view
plain copy

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

Reachability* curReach = [note object];

NSParameterAssert([curReach isKindOfClass: [Reachability class]]);

NetworkStatus status = [curReach currentReachabilityStatus];

if (status == NotReachable)

{

}

else if(status == kReachableViaWiFi)

{

}

else if(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
plain copy

- (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
plain copy

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

// Remove `#` and `0x`

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

hex = [hex substringFromIndex:1];

} else if ([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) {

return nil;

}

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

} else if (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];

}

原文地址 : http://blog.csdn.net/toss156/article/details/8993270?utm_source=tuicool&utm_medium=referral
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios开发