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
  
  
  */
 
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);
          }
      }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值