• ios 计算某个文件文件夹的大小


     1  2 ```objc
     3 @implementation NSString (XMGExtension)
     4 //- (unsigned long long)fileSize
     5 //{
     6 //    // 总大小
     7 //    unsigned long long size = 0;
     8 //
     9 //    // 文件管理者
    10 //    NSFileManager *mgr = [NSFileManager defaultManager];
    11 //
    12 //    // 文件属性
    13 //    NSDictionary *attrs = [mgr attributesOfItemAtPath:self error:nil];
    14 //
    15 //    if ([attrs.fileType isEqualToString:NSFileTypeDirectory]) { // 文件夹
    16 //        // 获得文件夹的大小  == 获得文件夹中所有文件的总大小
    17 //        NSDirectoryEnumerator *enumerator = [mgr enumeratorAtPath:self];
    18 //        for (NSString *subpath in enumerator) {
    19 //            // 全路径
    20 //            NSString *fullSubpath = [self stringByAppendingPathComponent:subpath];
    21 //            // 累加文件大小
    22 //            size += [mgr attributesOfItemAtPath:fullSubpath error:nil].fileSize;
    23 //        }
    24 //    } else { // 文件
    25 //        size = attrs.fileSize;
    26 //    }
    27 //
    28 //    return size;
    29 //}
    30 
    31 - (unsigned long long)fileSize
    32 {
    33     // 总大小
    34     unsigned long long size = 0;
    35 
    36     // 文件管理者
    37     NSFileManager *mgr = [NSFileManager defaultManager];
    38 
    39     // 是否为文件夹
    40     BOOL isDirectory = NO;
    41 
    42     // 路径是否存在
    43     BOOL exists = [mgr fileExistsAtPath:self isDirectory:&isDirectory];
    44     if (!exists) return size;
    45 
    46     if (isDirectory) { // 文件夹
    47         // 获得文件夹的大小  == 获得文件夹中所有文件的总大小
    48         NSDirectoryEnumerator *enumerator = [mgr enumeratorAtPath:self];
    49         for (NSString *subpath in enumerator) {
    50             // 全路径
    51             NSString *fullSubpath = [self stringByAppendingPathComponent:subpath];
    52             // 累加文件大小
    53             size += [mgr attributesOfItemAtPath:fullSubpath error:nil].fileSize;
    54         }
    55     } else { // 文件
    56         size = [mgr attributesOfItemAtPath:self error:nil].fileSize;
    57     }
    58 
    59     return size;
    60 }
    61 @end
    62 
    63 MKLog(@"%zd", @"/Users/xiaomage/Desktop".fileSize);
    64 ```
    65 
    66 ## 计算文字的宽度
    67 ```objc
    68 CGFloat titleW = [字符串 sizeWithFont:字体大小].width;
    69 CGFloat titleW = [字符串 sizeWithAttributes:@{NSFontAttributeName : 字体大小}].width;
    70 ```
    71 
    72 ## 有透明度的颜色
    73 ```objc
    74 [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.2];
    75 [UIColor colorWithWhite:1.0 alpha:0.2];
    76 [[UIColor whiteColor] colorWithAlphaComponent:0.2];
    77 ```
    78 
    79 ## viewWithTag:内部的大致实现思路
    80 ```objc
    81 @implementation UIView
    82 - (UIView *)viewWithTag:(NSInteger)tag
    83 {
    84     if (self.tag == tag) return self;
    85 
    86     for (UIView *subview in self.subviews) {
    87         return [subview viewWithTag:tag];
    88     }
    89 }
    90 @end
    91 ```
  • 相关阅读:
    C++怎么实现线程安全
    Linux内核之进程地址空间
    Linux内核之内存管理
    内存管理之内存寻址
    Linux内核初探
    进程间通信
    下拉列表控件实例 ComboBoxControl
    数据表格控件 DataGridControl
    8 种百度云高速下载,你值得拥有
    10 快好用的下载工具,终于和迅雷说拜拜了
  • 原文地址:https://www.cnblogs.com/mkai/p/5682263.html
Copyright © 2020-2023  润新知