zoukankan      html  css  js  c++  java
  • iOS 用 SDWebImage 清理图片缓存

    效果图如下:

    1.找到 SDWebImage找到SDImageCache类

    2.添加如下方法

    - (float)checkTmpSize
    {
        float totalSize = 0;
        NSDirectoryEnumerator *fileEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:_diskCachePath];
        for (NSString *fileName in fileEnumerator)
        {
            NSString *filePath = [_diskCachePath stringByAppendingPathComponent:fileName];
            
            NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
            
            unsigned long long length = [attrs fileSize];
            
            totalSize += length / 1024.0 / 1024.0;
        }
        //    NSLog(@"tmp size is %.2f",totalSize);
        
        return totalSize;
    }

    具体用tableView实现

    MoreViewController.h

    #import "BaseViewController.h"
    #import "More.h"
    @interface MoreViewController : BaseViewController<UITableViewDataSource,UITableViewDelegate>
    
    @property(strong,nonatomic)UITableView *MoreTableView;
    @property(strong,nonatomic)NSArray *arrayTitle;
    @property(strong,nonatomic)NSArray *arrayImage;
    
    @end

    MoreViewController.m 

    #import "MoreViewController.h"
    
    @interface MoreViewController ()
    @property(strong,nonatomic)UILabel *lbl;
    @end
    
    @implementation MoreViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.title=@"更多";
        [self _loadData];
        NSLog(@"%@",NSHomeDirectory());
    }
    
    -(void)_loadData
    {
        // 设置tableview的title和image
        self.arrayTitle=@[@"清除缓存",@"给个评价",@"商务合作",@"检测行版本",@"欢迎页",@"关于"];
        self.arrayImage=@[@"moreClear@2x",@"moreScore@2x",@"moreBusiness@2x",@"moreVersion@2x",@"moreWelcome@2x",@"moreAbout@2x"];
        // 初始化UItableView
        self.MoreTableView=[[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
        // 设置UItableView的背景色
        self.MoreTableView.backgroundColor=[UIColor blackColor];
        // 指定代理
        self.MoreTableView.delegate=self;
        self.MoreTableView.dataSource=self;
        // 分割线的样式
        self.MoreTableView.separatorStyle=UITableViewCellSeparatorStyleSingleLine;
        [self.view addSubview:self.MoreTableView];
        // 指定唯一标识符
        [self.MoreTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"MoreTableCell"];
        self.lbl=[[UILabel alloc]init];
        self.lbl.textColor=[UIColor whiteColor];
    }
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return self.arrayTitle.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MoreTableCell" forIndexPath:indexPath];
        if (indexPath.row==0) {
           self.lbl.frame= CGRectMake(200,20,200, cell.frame.size.height*0.5);
            self.lbl.text=[NSString stringWithFormat:@"缓存为%.2fMB",[[SDImageCache sharedImageCache] checkTmpSize]];
            [cell addSubview:self.lbl];
        }
    
        // 设置Cell的背景色
        cell.backgroundColor=[UIColor blackColor];
        // 设置title的文字颜色
        cell.textLabel.textColor=[UIColor whiteColor];
        cell.textLabel.text=self.arrayTitle[indexPath.row];
        cell.imageView.image=[UIImage imageNamed:self.arrayImage[indexPath.row]];
      
        return cell;
    }
    
    
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 60;
    }
    
    #pragma Mark - 选中跳转
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (indexPath.row==0) {
            [self alertView];
    
        }else if (indexPath.row==1){
            EvaluationViewController *evaluation=[EvaluationViewController new];
            [self.navigationController pushViewController:evaluation animated:YES];
        }
        else if (indexPath.row==2){
            BusinessViewController *business=[BusinessViewController new];
            [self.navigationController pushViewController:business animated:YES];
            
        }else if (indexPath.row==3){
            VersionViewController *version=[VersionViewController new];
            [self.navigationController pushViewController:version animated:YES];
           
        }else if (indexPath.row==4){
            WelcomeViewController *welcome=[WelcomeViewController new];
            [self.navigationController pushViewController:welcome animated:YES];
        }else{
            AboutViewController *about=[AboutViewController new];
            [self.navigationController pushViewController:about animated:YES];
        }
    
    }
    
    #pragma Mark - 弹出框
    -(void)alertView
    {
        NSLog(@"-----");
        float tmpSize=[[SDImageCache sharedImageCache] checkTmpSize];
        
        UIAlertController *alert=[UIAlertController alertControllerWithTitle:@"提示" message:[NSString  stringWithFormat:@"清理缓存(%.2fM)",tmpSize] preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *ok=[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            // 清除磁盘
            [[SDImageCache sharedImageCache] clearDisk];
            // 刷新数据
            [self.MoreTableView reloadData];
        }];
        
        UIAlertAction *cancle=[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:nil];
        [alert addAction:ok];
        [alert addAction:cancle];
        [self presentViewController:alert animated:YES completion:nil];
    }
    
    #pragma Mark - 整体刷新
    -(void)viewWillAppear:(BOOL)animated
    {
        //
        [super viewWillAppear:YES];
        [self.MoreTableView reloadData];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
       
    }
    
    @end
  • 相关阅读:
    docker搭建lnmp环境
    通过brew安装docker以及docker的使用
    源码编译安装扩展-phpize详解
    php7废弃mcrypt加密,使用openssl替换
    ubuntu安装docker
    mac 操作系统使用iterm(2)自动登录远程服务器
    linux 用户及用户组管理
    let var const 区别
    ubuntu 升级node和npm 版本
    OLTP与OLAP
  • 原文地址:https://www.cnblogs.com/bolin-123/p/5389176.html
Copyright © 2011-2022 走看看