IOS开发常用函数

作者: Daimer | 来源:发表于2017-02-10 15:41 被阅读7次

    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开发常用函数

        本文链接:https://www.haomeiwen.com/subject/rjggittx.html