iOS开发---常用公用方法

来源:互联网 发布:淘宝网视频 编辑:程序博客网 时间:2024/05/21 10:44
  1. 获取磁盘总空间大小
<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//磁盘总空间</span>+ (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">CGFloat</span>)diskOfAllSizeMBytes{    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">CGFloat</span> size = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.0</span>;    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSError</span> *error;    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSDictionary</span> *dic = [[<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSFileManager</span> defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (error) {<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#ifdef DEBUG</span>        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSLog</span>(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"error: %@"</span>, error<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.localizedDescription</span>);<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#endif</span>    }<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>{        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSNumber</span> *number = [dic objectForKey:NSFileSystemSize];        size = [number floatValue]/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1024</span>/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1024</span>;    }    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> size;}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li></ul>
  1. 获取指定路径下某个文件的大小
<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//获取文件大小</span>+ (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span>)fileSizeAtPath:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *)filePath{    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSFileManager</span> *fileManager = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSFileManager</span> defaultManager];    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (![fileManager fileExistsAtPath:filePath]) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> [[fileManager attributesOfItemAtPath:filePath error:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>] fileSize];}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>
  1. 获取文件夹下所有文件的大小
<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//获取文件夹下所有文件的大小</span>+ (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span>)folderSizeAtPath:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *)folderPath{    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSFileManager</span> *fileManager = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSFileManager</span> defaultManager];    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (![fileManager fileExistsAtPath:folderPath]) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;    NSEnumerator *filesEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator];    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *fileName;    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span> folerSize = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span> ((fileName = [filesEnumerator nextObject]) != <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>) {        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *filePath = [folderPath stringByAppendingPathComponent:fileName];        folerSize += [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span> fileSizeAtPath:filePath];    }    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> folerSize;}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>
  1. 获取字符串(或汉字)首字母
<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//获取字符串(或汉字)首字母</span>+ (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *)firstCharacterWithString:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *)string{    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableString</span> *str = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableString</span> stringWithString:string];    CFStringTransform((CFMutableStringRef)str, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NULL</span>, kCFStringTransformMandarinLatin, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NO</span>);    CFStringTransform((CFMutableStringRef)str, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NULL</span>, kCFStringTransformStripDiacritics, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NO</span>);    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *pingyin = [str capitalizedString];    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> [pingyin substringToIndex:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>];}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>
  1. 将字符串数组按照元素首字母顺序进行排序分组
<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//将字符串数组按照元素首字母顺序进行排序分组</span>+ (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSDictionary</span> *)dictionaryOrderByCharacterWithOriginalArray:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSArray</span> *)array{    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (array<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.count</span> == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>) {        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>;    }    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span> obj in array) {        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (![obj isKindOfClass:[<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> class]]) {            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>;        }    }    UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation];    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableArray</span> *objects = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableArray</span> arrayWithCapacity:indexedCollation<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.sectionTitles</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.count</span>];    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//创建27个分组数组</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> i = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; i < indexedCollation<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.sectionTitles</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.count</span>; i++) {        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableArray</span> *obj = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableArray</span> array];        [objects addObject:obj];    }    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableArray</span> *keys = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableArray</span> arrayWithCapacity:objects<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.count</span>];    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//按字母顺序进行分组</span>    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSInteger</span> lastIndex = -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> i = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; i < array<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.count</span>; i++) {        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSInteger</span> index = [indexedCollation sectionForObject:array[i] collationStringSelector:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@selector</span>(uppercaseString)];        [[objects objectAtIndex:index] addObject:array[i]];        lastIndex = index;    }    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//去掉空数组</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> i = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; i < objects<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.count</span>; i++) {        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableArray</span> *obj = objects[i];        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (obj<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.count</span> == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>) {            [objects removeObject:obj];        }    }    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//获取索引字母</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableArray</span> *obj in objects) {        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *str = obj[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>];        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *key = [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span> firstCharacterWithString:str];        [keys addObject:key];    }    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableDictionary</span> *dic = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableDictionary</span> dictionary];    [dic setObject:objects forKey:keys];    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> dic;}<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//获取字符串(或汉字)首字母</span>+ (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *)firstCharacterWithString:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *)string{    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableString</span> *str = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableString</span> stringWithString:string];    CFStringTransform((CFMutableStringRef)str, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NULL</span>, kCFStringTransformMandarinLatin, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NO</span>);    CFStringTransform((CFMutableStringRef)str, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NULL</span>, kCFStringTransformStripDiacritics, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NO</span>);    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *pingyin = [str capitalizedString];    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> [pingyin substringToIndex:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>];}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li></ul>

使用如下:

NSArray *arr = @[@”guangzhou”, @”shanghai”, @”北京”, @”henan”, @”hainan”]; 
NSDictionary *dic = [Utilities dictionaryOrderByCharacterWithOriginalArray:arr]; 
NSLog(@”\n\ndic: %@”, dic); 
输出结果如下:

输出结果 
7. 获取当前时间

<code class="hljs lua has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">//获取当前时间//format: @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"yyyy-MM-dd HH:mm:ss"</span>、@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"yyyy年MM月dd日 HH时mm分ss秒"</span>+ (NSString *)currentDateWithFormat:(NSString *)format{    NSDateFormatter *dateFormatter = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">[[NSDateFormatter alloc] init];    [dateFormatter setDateFormat:format];    return [dateFormatter stringFromDate:[NSDate date]]</span>;}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>
  1. 计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等 
    /**

    • 计算上次日期距离现在多久 
      *
    • @param lastTime 上次日期(需要和格式对应)
    • @param format1 上次日期格式
    • @param currentTime 最近日期(需要和格式对应)
    • @param format2 最近日期格式 
      *
    • @return xx分钟前、xx小时前、xx天前 
      */
    • (NSString )timeIntervalFromLastTime:(NSString )lastTime 
      lastTimeFormat:(NSString *)format1 
      ToCurrentTime:(NSString *)currentTime 
      currentTimeFormat:(NSString *)format2{ 
      //上次时间 
      NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc]init]; 
      dateFormatter1.dateFormat = format1; 
      NSDate *lastDate = [dateFormatter1 dateFromString:lastTime]; 
      //当前时间 
      NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc]init]; 
      dateFormatter2.dateFormat = format2; 
      NSDate *currentDate = [dateFormatter2 dateFromString:currentTime]; 
      return [Utilities timeIntervalFromLastTime:lastDate ToCurrentTime:currentDate]; 
      }

    • (NSString )timeIntervalFromLastTime:(NSDate )lastTime ToCurrentTime:(NSDate *)currentTime{ 
      NSTimeZone *timeZone = [NSTimeZone systemTimeZone]; 
      //上次时间 
      NSDate *lastDate = [lastTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:lastTime]]; 
      //当前时间 
      NSDate *currentDate = [currentTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:currentTime]]; 
      //时间间隔 
      NSInteger intevalTime = [currentDate timeIntervalSinceReferenceDate] - [lastDate timeIntervalSinceReferenceDate];

    //秒、分、小时、天、月、年 
    NSInteger minutes = intevalTime / 60; 
    NSInteger hours = intevalTime / 60 / 60; 
    NSInteger day = intevalTime / 60 / 60 / 24; 
    NSInteger month = intevalTime / 60 / 60 / 24 / 30; 
    NSInteger yers = intevalTime / 60 / 60 / 24 / 365;

    if (minutes <= 10) { 
    return @”刚刚”; 
    }else if (minutes < 60){ 
    return [NSString stringWithFormat: @”%ld分钟前”,(long)minutes]; 
    }else if (hours < 24){ 
    return [NSString stringWithFormat: @”%ld小时前”,(long)hours]; 
    }else if (day < 30){ 
    return [NSString stringWithFormat: @”%ld天前”,(long)day]; 
    }else if (month < 12){ 
    NSDateFormatter * df =[[NSDateFormatter alloc]init]; 
    df.dateFormat = @”M月d日”; 
    NSString * time = [df stringFromDate:lastDate]; 
    return time; 
    }else if (yers >= 1){ 
    NSDateFormatter * df =[[NSDateFormatter alloc]init]; 
    df.dateFormat = @”yyyy年M月d日”; 
    NSString * time = [df stringFromDate:lastDate]; 
    return time; 

    return @”“; 

    使用如下:

NSLog(@”\n\nresult: %@”, [Utilities timeIntervalFromLastTime:@”2015年12月8日 15:50” 
lastTimeFormat:@”yyyy年MM月dd日 HH:mm” 
ToCurrentTime:@”2015/12/08 16:12” 
currentTimeFormat:@”yyyy/MM/dd HH:mm”]); 
输出结果如下:

输出结果 
9. 判断手机号码格式是否正确 
//判断手机号码格式是否正确 
+ (BOOL)valiMobile:(NSString *)mobile{ 
mobile = [mobile stringByReplacingOccurrencesOfString:@” ” withString:@”“]; 
if (mobile.length != 11) 

return NO; 
}else{ 
/** 
* 移动号段正则表达式 
*/ 
NSString *CM_NUM = @”^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\d{8}|(1705)\d{7};//NSStringCUNUM=@((13[02])|(145)|(15[56])|(176)|(18[5,6]))\d8|(1709)\d7”; 
/** 
* 电信号段正则表达式 
*/ 
NSString *CT_NUM = @”^((133)|(153)|(177)|(18[0,1,9]))\d{8}$”; 
NSPredicate *pred1 = [NSPredicate predicateWithFormat:@”SELF MATCHES %@”, CM_NUM]; 
BOOL isMatch1 = [pred1 evaluateWithObject:mobile]; 
NSPredicate *pred2 = [NSPredicate predicateWithFormat:@”SELF MATCHES %@”, CU_NUM]; 
BOOL isMatch2 = [pred2 evaluateWithObject:mobile]; 
NSPredicate *pred3 = [NSPredicate predicateWithFormat:@”SELF MATCHES %@”, CT_NUM]; 
BOOL isMatch3 = [pred3 evaluateWithObject:mobile];

    if (isMatch1 || isMatch2 || isMatch3) {        return YES;    }else{        return NO;    }}


10. 判断邮箱格式是否正确 
//利用正则表达式验证 
+ (BOOL)isAvailableEmail:(NSString *)email { 
NSString *emailRegex = @”[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}”; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@”SELF MATCHES %@”, emailRegex]; 
return [emailTest evaluateWithObject:email]; 

11. 将十六进制颜色转换为 UIColor 对象 
//将十六进制颜色转换为 UIColor 对象 
+ (UIColor )colorWithHexString:(NSString )color{ 
NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; 
// String should be 6 or 8 characters 
if ([cString length] < 6) { 
return [UIColor clearColor]; 

// strip “0X” or “#” if it appears 
if ([cString hasPrefix:@”0X”]) 
cString = [cString substringFromIndex:2]; 
if ([cString hasPrefix:@”#”]) 
cString = [cString substringFromIndex:1]; 
if ([cString length] != 6) 
return [UIColor clearColor]; 
// Separate into r, g, b substrings 
NSRange range; 
range.location = 0; 
range.length = 2; 
//r 
NSString *rString = [cString substringWithRange:range]; 
//g 
range.location = 2; 
NSString *gString = [cString substringWithRange:range]; 
//b 
range.location = 4; 
NSString *bString = [cString substringWithRange:range]; 
// Scan values 
unsigned int r, g, b; 
[[NSScanner scannerWithString:rString] scanHexInt:&r]; 
[[NSScanner scannerWithString:gString] scanHexInt:&g]; 
[[NSScanner scannerWithString:bString] scanHexInt:&b]; 
return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f]; 

12. 对图片进行滤镜处理

pragma mark - 对图片进行滤镜处理

// 怀旧 –> CIPhotoEffectInstant 单色 –> CIPhotoEffectMono 
// 黑白 –> CIPhotoEffectNoir 褪色 –> CIPhotoEffectFade 
// 色调 –> CIPhotoEffectTonal 冲印 –> CIPhotoEffectProcess 
// 岁月 –> CIPhotoEffectTransfer 铬黄 –> CIPhotoEffectChrome 
// CILinearToSRGBToneCurve, CISRGBToneCurveToLinear, CIGaussianBlur, CIBoxBlur, CIDiscBlur, CISepiaTone, CIDepthOfField 
+ (UIImage )filterWithOriginalImage:(UIImage )image filterName:(NSString *)name{ 
CIContext *context = [CIContext contextWithOptions:nil]; 
CIImage *inputImage = [[CIImage alloc] initWithImage:image]; 
CIFilter *filter = [CIFilter filterWithName:name]; 
[filter setValue:inputImage forKey:kCIInputImageKey]; 
CIImage *result = [filter valueForKey:kCIOutputImageKey]; 
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]]; 
UIImage *resultImage = [UIImage imageWithCGImage:cgImage]; 
CGImageRelease(cgImage); 
return resultImage; 

13. 对图片进行模糊处理

pragma mark - 对图片进行模糊处理

// CIGaussianBlur —> 高斯模糊 
// CIBoxBlur —> 均值模糊(Available in iOS 9.0 and later) 
// CIDiscBlur —> 环形卷积模糊(Available in iOS 9.0 and later) 
// CIMedianFilter —> 中值模糊, 用于消除图像噪点, 无需设置radius(Available in iOS 9.0 and later) 
// CIMotionBlur —> 运动模糊, 用于模拟相机移动拍摄时的扫尾效果(Available in iOS 9.0 and later) 
+ (UIImage )blurWithOriginalImage:(UIImage )image blurName:(NSString *)name radius:(NSInteger)radius{ 
CIContext *context = [CIContext contextWithOptions:nil]; 
CIImage *inputImage = [[CIImage alloc] initWithImage:image]; 
CIFilter *filter; 
if (name.length != 0) { 
filter = [CIFilter filterWithName:name]; 
[filter setValue:inputImage forKey:kCIInputImageKey]; 
if (![name isEqualToString:@”CIMedianFilter”]) { 
[filter setValue:@(radius) forKey:@”inputRadius”]; 

CIImage *result = [filter valueForKey:kCIOutputImageKey]; 
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]]; 
UIImage *resultImage = [UIImage imageWithCGImage:cgImage]; 
CGImageRelease(cgImage); 
return resultImage; 
}else{ 
return nil; 


14. 调整图片饱和度、亮度、对比度 
/** 
* 调整图片饱和度, 亮度, 对比度 

* @param image 目标图片 
* @param saturation 饱和度 
* @param brightness 亮度: -1.0 ~ 1.0 
* @param contrast 对比度 

*/ 
+ (UIImage )colorControlsWithOriginalImage:(UIImage )image 
saturation:(CGFloat)saturation 
brightness:(CGFloat)brightness 
contrast:(CGFloat)contrast{ 
CIContext *context = [CIContext contextWithOptions:nil]; 
CIImage *inputImage = [[CIImage alloc] initWithImage:image]; 
CIFilter *filter = [CIFilter filterWithName:@”CIColorControls”]; 
[filter setValue:inputImage forKey:kCIInputImageKey];

[filter setValue:@(saturation) forKey:@"inputSaturation"];[filter setValue:@(brightness) forKey:@"inputBrightness"];[filter setValue:@(contrast) forKey:@"inputContrast"];CIImage *result = [filter valueForKey:kCIOutputImageKey];CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];UIImage *resultImage = [UIImage imageWithCGImage:cgImage];CGImageRelease(cgImage);return resultImage;


15. 创建一张实时模糊效果 View (毛玻璃效果) 
//Avilable in iOS 8.0 and later 
+ (UIVisualEffectView *)effectViewWithFrame:(CGRect)frame{ 
UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; 
UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect]; 
effectView.frame = frame; 
return effectView; 

16. 全屏截图 
//全屏截图 
+ (UIImage *)shotScreen{ 
UIWindow *window = [UIApplication sharedApplication].keyWindow; 
UIGraphicsBeginImageContext(window.bounds.size); 
[window.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return image; 

17. 截取一张 view 生成图片 
//截取view生成一张图片 
+ (UIImage )shotWithView:(UIView )view{ 
UIGraphicsBeginImageContext(view.bounds.size); 
[view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return image; 

18. 截取view中某个区域生成一张图片 
//截取view中某个区域生成一张图片 
+ (UIImage )shotWithView:(UIView )view scope:(CGRect)scope{ 
CGImageRef imageRef = CGImageCreateWithImageInRect([self shotWithView:view].CGImage, scope); 
UIGraphicsBeginImageContext(scope.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGRect rect = CGRectMake(0, 0, scope.size.width, scope.size.height); 
CGContextTranslateCTM(context, 0, rect.size.height);//下移 
CGContextScaleCTM(context, 1.0f, -1.0f);//上翻 
CGContextDrawImage(context, rect, imageRef); 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
CGImageRelease(imageRef); 
CGContextRelease(context); 
return image; 

19. 压缩图片到指定尺寸大小 
//压缩图片到指定尺寸大小 
+ (UIImage )compressOriginalImage:(UIImage )image toSize:(CGSize)size{ 
UIImage *resultImage = image; 
UIGraphicsBeginImageContext(size); 
[resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)]; 
UIGraphicsEndImageContext(); 
return resultImage; 

20. 压缩图片到指定文件大小 
//压缩图片到指定文件大小 
+ (NSData )compressOriginalImage:(UIImage )image toMaxDataSizeKBytes:(CGFloat)size{ 
NSData *data = UIImageJPEGRepresentation(image, 1.0); 
CGFloat dataKBytes = data.length/1000.0; 
CGFloat maxQuality = 0.9f; 
CGFloat lastData = dataKBytes; 
while (dataKBytes > size && maxQuality > 0.01f) { 
maxQuality = maxQuality - 0.01f; 
data = UIImageJPEGRepresentation(image, maxQuality); 
dataKBytes = data.length/1000.0; 
if (lastData == dataKBytes) { 
break; 
}else{ 
lastData = dataKBytes; 


return data; 

21. 获取设备 IP 地址 
需要先引入下头文件:

import 

import 

<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; box-sizing: border-box; font-family: 'Source Code Pro', monospace; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/*  ** lineFrame:     虚线的 frame  ** length:        虚线中短线的宽度  ** spacing:       虚线中短线之间的间距  ** color:         虚线中短线的颜色*/</span>+ (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIView</span> *)createDashedLineWithFrame:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">CGRect</span>)lineFrame                           lineLength:(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>)length                          lineSpacing:(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>)spacing                            lineColor:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIColor</span> *)color{    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIView</span> *dashedLine = [[<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIView</span> alloc] initWithFrame:lineFrame];    dashedLine<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.backgroundColor</span> = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIColor</span> clearColor];    CAShapeLayer *shapeLayer = [CAShapeLayer layer];    [shapeLayer setBounds:dashedLine<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.bounds</span>];    [shapeLayer setPosition:CGPointMake(CGRectGetWidth(dashedLine<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.frame</span>) / <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, CGRectGetHeight(dashedLine<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.frame</span>))];    [shapeLayer setFillColor:[<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIColor</span> clearColor]<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.CGColor</span>];    [shapeLayer setStrokeColor:color<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.CGColor</span>];    [shapeLayer setLineWidth:CGRectGetHeight(dashedLine<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.frame</span>)];    [shapeLayer setLineJoin:kCALineJoinRound];    [shapeLayer setLineDashPattern:[<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSArray</span> arrayWithObjects:[<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSNumber</span> numberWithInt:length], [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSNumber</span> numberWithInt:spacing], <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>]];    CGMutablePathRef path = CGPathCreateMutable();    CGPathMoveToPoint(path, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NULL</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>);    CGPathAddLineToPoint(path, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">NULL</span>, CGRectGetWidth(dashedLine<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.frame</span>), <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>);    [shapeLayer setPath:path];    CGPathRelease(path);    [dashedLine<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.layer</span> addSublayer:shapeLayer];    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> dashedLine;}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"></ul>
0 0