【IOS】IOS開發常用函數

來源:互聯網
上載者:User

1、擷取本地的語言

+ (NSString *)getLocalLanguage{    NSString *language = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];    return language;}

2、擷取Mac地址

// 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、微博中擷取時間差,(幾天前,幾小時前,幾分鐘前)

+ (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、計算字串中單詞的個數

+ (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、螢幕並儲存到相簿

+ (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、擷取本月,本周,本季度第一天的時間戳記

+ (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、判斷是否越獄

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 2if ( [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"] ){return YES;}// method 3if ( 0 == system("ls") ){return YES;}    return NO;}+ (NSString *)jailBreaker{if ( __jb_app ){return [NSString stringWithUTF8String:__jb_app];}else{return @"";}}

7、定義單例的宏

#undefAS_SINGLETON#define AS_SINGLETON( __class ) \+ (__class *)sharedInstance;#undefDEF_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、網路狀態檢測

- (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、添加推送訊息

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

+ (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 charactersNSUInteger length = [hex length];if (length != 3 && length != 6 && length != 8) {return nil;}// Make the string 8 characters long for easier parsingif (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];}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.