转载

iOS开发中的一些常用方法(二)

iOS开发中的一些常用方法(二)

1.磁盘总空间大小 + (CGFloat)diskOfAllSizeMBytes {     CGFloat size = 0.0;     NSError *error;     NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];     if (error) { #ifdef DEBUG         NSLog(@"error: %@", error.localizedDescription); #endif     }else{         NSNumber *number = [dic objectForKey:NSFileSystemSize];         size = [number floatValue]/1024/1024;     }     return size; }   2.磁盘可用空间大小 + (CGFloat)diskOfFreeSizeMBytes {     CGFloat size = 0.0;     NSError *error;     NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];     if (error) { #ifdef DEBUG         NSLog(@"error: %@", error.localizedDescription); #endif     }else{         NSNumber *number = [dic objectForKey:NSFileSystemFreeSize];         size = [number floatValue]/1024/1024;     }     return size; }  3.将字符串数组按照元素首字母顺序进行排序分组 + (NSDictionary *)dictionaryOrderByCharacterWithOriginalArray:(NSArray *)array {     if (array.count == 0) {         return nil;     }     for (id obj in array) {         if (![obj isKindOfClass:[NSString class]]) {             return nil;         }     }     UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation];     NSMutableArray *objects = [NSMutableArray arrayWithCapacity:indexedCollation.sectionTitles.count];     //创建27个分组数组     for (int i = 0; i < indexedCollation.sectionTitles.count; i++) {         NSMutableArray *obj = [NSMutableArray array];         [objects addObject:obj];     }     NSMutableArray *keys = [NSMutableArray arrayWithCapacity:objects.count];     //按字母顺序进行分组     NSInteger lastIndex = -1;     for (int i = 0; i < array.count; i++) {         NSInteger index = [indexedCollation sectionForObject:array[i] collationStringSelector:@selector(uppercaseString)];         [[objects objectAtIndex:index] addObject:array[i]];         lastIndex = index;     }     //去掉空数组     for (int i = 0; i < objects.count; i++) {         NSMutableArray *obj = objects[i];         if (obj.count == 0) {             [objects removeObject:obj];         }     }     //获取索引字母     for (NSMutableArray *obj in objects) {         NSString *str = obj[0];         NSString *key = [self firstCharacterWithString:str];         [keys addObject:key];     }     NSMutableDictionary *dic = [NSMutableDictionary dictionary];     [dic setObject:objects forKey:keys];     return dic; }  4.将字符串数组按照元素首字母顺序进行排序分组 + (NSDictionary *)dictionaryOrderByCharacterWithOriginalArray:(NSArray *)array {     if (array.count == 0) {         return nil;     }     for (id obj in array) {         if (![obj isKindOfClass:[NSString class]]) {             return nil;         }     }     UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation];     NSMutableArray *objects = [NSMutableArray arrayWithCapacity:indexedCollation.sectionTitles.count];     //创建27个分组数组     for (int i = 0; i < indexedCollation.sectionTitles.count; i++) {         NSMutableArray *obj = [NSMutableArray array];         [objects addObject:obj];     }     NSMutableArray *keys = [NSMutableArray arrayWithCapacity:objects.count];     //按字母顺序进行分组     NSInteger lastIndex = -1;     for (int i = 0; i < array.count; i++) {         NSInteger index = [indexedCollation sectionForObject:array[i] collationStringSelector:@selector(uppercaseString)];         [[objects objectAtIndex:index] addObject:array[i]];         lastIndex = index;     }     //去掉空数组     for (int i = 0; i < objects.count; i++) {         NSMutableArray *obj = objects[i];         if (obj.count == 0) {             [objects removeObject:obj];         }     }     //获取索引字母     for (NSMutableArray *obj in objects) {         NSString *str = obj[0];         NSString *key = [self firstCharacterWithString:str];         [keys addObject:key];     }     NSMutableDictionary *dic = [NSMutableDictionary dictionary];     [dic setObject:objects forKey:keys];     return dic; }   5.对图片进行滤镜处理  // 怀旧 --> 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; }  6.对图片进行模糊处理 // 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;     } }  7.跳转到系统的相关界面: /*  *  需要添加一个字段  *  蓝色的项目工程文件 -> Info -> URL Types -> 添加一个 -> 设置URL  Sch**** 为 prefs的url    NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];  [[UIApplication sharedApplication] openURL:url];    跳转到其他的界面的字段(不全,详细看链接)  About — prefs:root=General&path=About    Accessibility — prefs:root=General&path=ACCESSIBILITY    AirplaneModeOn— prefs:root=AIRPLANE_MODE    Auto-Lock — prefs:root=General&path=AUTOLOCK    Brightness — prefs:root=Brightness    Bluetooth — prefs:root=General&path=Bluetooth    Date& Time — prefs:root=General&path=DATE_AND_TIME    FaceTime — prefs:root=FACETIME    General— prefs:root=General    原文链接:http://www.jianshu.com/p/19602f48309b    */  8.创建一张实时模糊效果 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; }   9.设置Label的行间距 + (void)setLineSpaceWithString:(UILabel *)label {          NSMutableAttributedString *attributedString =     [[NSMutableAttributedString alloc] initWithString:label.text];     NSMutableParagraphStyle *paragraphStyle =  [[NSMutableParagraphStyle alloc] init];     [paragraphStyle setLineSpacing:3];          //调整行间距     [attributedString addAttribute:NSParagraphStyleAttributeName                              value:paragraphStyle                              range:NSMakeRange(0, [label.text length])];     label.attributedText = attributedString; }   10.让Plain风格的TableView的区头可以”不悬停”(可以直接百度搜到): - (void)scrollViewDidScroll:(UIScrollView *)scrollView  {      if(scrollView == self.myTab) {          CGFloat sectionHeaderHeight = 40;          if (scrollView.contentOffset.y=0) {                            scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);          } else if (scrollView.contentOffset.y>=sectionHeaderHeight) {                            scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);          }      } }


正文到此结束
Loading...