zoukankan      html  css  js  c++  java
  • 常用公共方法

    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);
             }
         }
    }
  • 相关阅读:
    openresty
    ATS 相关
    pandas
    flask
    ansible
    zipline
    bcolz
    数据分析 --- concat
    Go --- 基础使用
    Go --- 基础介绍
  • 原文地址:https://www.cnblogs.com/wangyingblock/p/5630469.html
Copyright © 2011-2022 走看看