iOS -一些常用的方法
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 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、定义单例的宏
- #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、网络状态检测
- - (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 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];
- }
iOS -一些常用的方法的更多相关文章
- iOS项目常用效果方法注意点集锦
移动中隐藏tabBar,静止显示tabbar - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { // 隐藏tabbar ...
- IOS UIScrollView常用代理方法
iOS UIScrollView代理方法有很多,从头文件中找出来学习一下 //只要滚动了就会触发 - (void)scrollViewDidScroll:(UIScrollView *)scrollV ...
- ios中常用的方法
图片分类 @implementation UIImageView (ext) +(UIImageView*)imageViewWith:(UIImage*)img imgFrame:(CGRect)_ ...
- iOS常用公共方法
iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...
- iOS中常用的四种数据持久化方法简介
iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...
- iOS 常用公共方法
iOS常用公共方法 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat size = 0.0; NSError *error; N ...
- IOS常见的加密方法,常用的MD5和Base64
iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...
- iOS常用加密方法(aes、md5、base64)
1.代码 iOS常用加密方法(aes.md5.base64) .AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 ...
- iOS-提高iOS开发效率的方法和工具
提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...
随机推荐
- [Webpack 2] Import a non-ES6 module with Webpack
When you have a dependency that does not export itself properly, you can use the exports-loader to f ...
- Robots协议具体解释
禁止搜索引擎收录的方法(robots.txt) 一.什么是robots.txt文件? 搜索引擎通过一种程序robot(又称spider),自己主动訪问互联网上的网页并获取网页信息.您能够在您的站点中创 ...
- yum 命令提示语法错误
1. 问题信息 SyntaxError: invalid syntax 2. 问题原因 升级python版本导致 3. 解决方法 vi /usr/bin/yum 将#!/usr/bin/python ...
- Redis与Memcached对比
Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富,有字符串.链表.集合和有序集合.支持在服务器端计算集合的并,交和补集等.还支持多 ...
- NHibernate中的IQueryable和IQueryover
今天在做一个小项目时,用到了NHibernate,使用了模糊查询(Like),在后台用IQueryable去接收Session.Query<T>()的查询结果. 代码如下: /// < ...
- 结合Retrofit,RxJava,Okhttp,FastJson的网络框架RRO
Retrofit以其灵活的调用形式, 强大的扩展性著称. 随着RxAndroid的推出, Retrofit这样的可插拔式的网络框架因其可以灵活兼容各种数据解析器, 回调形式(主要还是RxJava啦)而 ...
- WebView组件的应用
1.什么是WebView? WebView(网络视图)能加载显示网页,可以将其视为一个浏览器,它使用了WebKit渲染引擎加载显示网页. <?xml version="1.0" ...
- ACM/ICPC ZOJ1003-Crashing Balloon 解题代码
#include <iostream> using namespace std; int main() { int **array = new int *[100]; for ( int ...
- BAT变量中的百分号学习
在BlogJava上看到如下的批处理文件,并将其转记在此: 1 2 3 4 5 6 7 8 @echo off rem bat 获取系统时间,并去掉时间小时前面的空格 rem 2012-12-12 ...
- 从零基础到App Store