美文网首页
iOS像360滚动圆球那样释放内存,并计算缓存

iOS像360滚动圆球那样释放内存,并计算缓存

作者: 年轻皆浮云 | 来源:发表于2016-08-17 13:02 被阅读98次

    #import"CleanViewController.h"

    #import"SDImageCache.h"

    #import"UIImageView+WebCache.h"

    @interfaceCleanViewController()

    {

    UIImageView*imageV;

    floattop;

    UILabel*_numLabel;

    UIImageView*warterImgeV ;

    float_countFileSize;//所有缓存文件的大小(M)

    BOOLisClear;

    UILabel*percentageLabel;

    BOOL_isPercentage;

    }

    @end

    staticfloatW =140;

    staticfloatH =140;

    staticNSIntegeri =0;

    @implementationCleanViewController

    - (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view.

    top= [UIScreenmainScreen].bounds.size.height/4.8f;//140;

    self.view.backgroundColor= [UIColorcolorWithRed:65/255.fgreen:171/255.fblue:145/255.falpha:1];

    //1.创建mainView:

    CGRectframe =CGRectMake( ([UIScreenmainScreen].bounds.size.width-W)/2,top,W,H);

    UIView*view = [[UIViewalloc]initWithFrame:frame];

    //view.backgroundColor = [UIColor redColor];

    view.layer.cornerRadius=70;

    //view.layer.borderWidth = .13;

    view.layer.masksToBounds=YES;

    [self.viewaddSubview:view];

    //view.backgroundColor = [UIColor colorWithRed:65/255.f green:171/255.f blue:145/255.f alpha:1];

    //2.添加外圆环

    CGFloatspace =14;

    CGRectframeR =CGRectMake( ([UIScreenmainScreen].bounds.size.width-W)/2-space/2,top-space/2,W+space,H+space);

    imageV=[[UIImageViewalloc]initWithFrame:frameR];

    imageV.image= [UIImageimageNamed:@"fb_rotation"];

    [self.viewaddSubview:imageV];

    [NSTimerscheduledTimerWithTimeInterval:.1target:selfselector:@selector(timeActR:)userInfo:imageVrepeats:YES];

    //添加图片水;

    warterImgeV= [[UIImageViewalloc]initWithFrame:CGRectMake(0,10,500,250)];

    warterImgeV.image= [UIImageimageNamed:@"fb_wave.png"];

    //warterImgeV.backgroundColor = [UIColor yellowColor];

    [viewaddSubview:warterImgeV];

    warterImgeV.transform=CGAffineTransformMakeTranslation(-350,100);

    //2.5添加百分比label:percentage百分比

    percentageLabel= [[UILabelalloc]initWithFrame:CGRectMake(0,0, view.frame.size.width, view.frame.size.height)];

    //percentageLabel.text = @"20.3%";

    percentageLabel.text= [NSStringstringWithFormat:@"%.01f%%",arc4random_uniform(20)+0.2f];

    percentageLabel.textColor= [UIColorredColor];

    percentageLabel.font= [UIFontsystemFontOfSize:36weight:7];

    percentageLabel.textAlignment=NSTextAlignmentCenter;

    [viewaddSubview:percentageLabel];

    //2.6创建百分比label

    UILabel*label = [[UILabelalloc]initWithFrame:CGRectMake(0,percentageLabel.frame.size.height/2,percentageLabel.frame.size.width,percentageLabel.frame.size.height/2)];

    label.text=@"百分比";

    label.font= [UIFontsystemFontOfSize:18weight:4];

    label.textAlignment=NSTextAlignmentCenter;

    label.textColor= [UIColorredColor];

    [percentageLabeladdSubview:label];

    //3.添加横线

    //3.添加横线

    UIView*blackView = [[UIViewalloc]initWithFrame:CGRectMake(30,CGRectGetMaxY(view.frame)+50,[UIScreenmainScreen].bounds.size.width-30*2,8)];

    blackView.backgroundColor= [UIColorblackColor];

    blackView.layer.cornerRadius=4;

    blackView.layer.masksToBounds=YES;

    [self.viewaddSubview:blackView];

    //4.创建label

    _numLabel= [[UILabelalloc]initWithFrame:CGRectMake(0,CGRectGetMaxY(blackView.frame)+20,[UIScreenmainScreen].bounds.size.width,55)];

    //_numLabel.backgroundColor = [UIColor redColor];

    _numLabel.textColor= [UIColorredColor];

    _numLabel.text=@"缓存:999933399M";

    _numLabel.textAlignment=NSTextAlignmentCenter;

    _numLabel.font= [UIFontsystemFontOfSize:32weight:9];

    [self.viewaddSubview:_numLabel];

    [selfcountCacheFileSize];//设置文件大小

    //5.创建清除按钮

    UIButton*btn = [[UIButtonalloc]initWithFrame:CGRectMake(( [UIScreenmainScreen].bounds.size.width-150)/2,CGRectGetMaxY(_numLabel.frame)+20,150,40)];

    btn.backgroundColor= [UIColorcolorWithRed:0green:0blue:0alpha:.2];

    [btnsetTitle:@"一键清除"forState:UIControlStateNormal];

    [btnsetTitleColor:[UIColorredColor]forState:UIControlStateNormal];

    [btnsetTitleColor:[UIColorwhiteColor]forState:UIControlStateSelected];

    btn.layer.cornerRadius=10;

    btn.layer.masksToBounds=YES;

    btn.layer.borderColor= [UIColorwhiteColor].CGColor;

    btn.layer.borderWidth=.5;

    [btnaddTarget:selfaction:@selector(btnAct:)forControlEvents:UIControlEventTouchUpInside];

    [btnsetTitle:@"完成/退出"forState:UIControlStateSelected];

    [self.viewaddSubview:btn];

    }

    //按钮的点击方法:

    -(void)btnAct:(UIButton*)btn{

    //1.一键清除

    if(btn.selected==NO) {

    _isPercentage= !_isPercentage;//设置启动百分比加+

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.1*NSEC_PER_SEC)),dispatch_get_main_queue(), ^{

    [UIViewanimateWithDuration:3animations:^{

    warterImgeV.transform=CGAffineTransformIdentity;

    }completion:^(BOOLfinished) {

    //做动画效果:

    [NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(timeAct:)userInfo:warterImgeVrepeats:YES];

    }];

    });

    // 4、清除所有的缓存文件

    //-----导入清除缓存-------

    [[SDImageCachesharedImageCache]clearDisk];

    isClear=YES;

    //[self countCacheFileSize];

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3*NSEC_PER_SEC)),dispatch_get_main_queue(), ^{

    //清除缓存:

    [selfcountCacheFileSize];

    });

    //2.完成推出

    }else{

    [selfdismissViewControllerAnimated:NOcompletion:^{

    }];

    }

    btn.selected= !btn.selected;

    }

    //定时器切换

    -(void)timeAct:(NSTimer*)timer{

    //UIImageView *warterImgeV = timer.userInfo;

    CGFloatYi =7;

    if(i==0) {

    //重新设置frame:

    CGRectfloatCont =warterImgeV.frame;

    floatCont.origin.x= -CGRectGetWidth(warterImgeV.frame)+W+Yi;

    warterImgeV.frame= floatCont;

    }

    [UIViewanimateWithDuration:3.2animations:^{

    warterImgeV.transform=CGAffineTransformMakeTranslation(CGRectGetWidth(warterImgeV.frame)-1.3*W,0);

    [timersetFireDate:[NSDatedistantFuture]];

    }completion:^(BOOLfinished) {

    [timersetFireDate:[NSDatedistantPast]];

    warterImgeV.transform=CGAffineTransformIdentity;

    }];

    }

    -(void)timeActR:(NSTimer*)timer{

    //2.设置旋转:

    imageV.transform=CGAffineTransformRotate(imageV.transform,M_PI/12);

    staticCGFloaty =21;

    if(_isPercentage){

    if(y<91) {

    percentageLabel.text= [NSStringstringWithFormat:@"%.01f%%",y];

    y=y+4.1;

    }

    }

    }

    //------导入清除缓存----------

    -(void)countCacheFileSize{

    //float _countFileSize; //所有缓存文件的大小(M)

    // 1、找到缓存文件的保存路径

    // NSHomeDirectory()找到应用的沙盒路径

    NSString*filePath =[NSHomeDirectory()stringByAppendingPathComponent:@"Library/Caches/com.hackemist.SDWebImageCache.default"];

    NSLog(@"->%@",filePath);

    // 2、获取所有的缓存文件

    //文件管理对象类NSFileManager,有它去管理我们的文件目录

    NSFileManager*fileManager = [NSFileManagerdefaultManager];

    // subpathsOfDirectoryAtPath,获取当前路径下所有子文件名

    NSArray*fileArray = [fileManagersubpathsOfDirectoryAtPath:filePatherror:nil];

    // 3、计算所有缓存文件的大小

    longlongfileSize =0;//所有文件的总字节数

    for(NSString*fileNameinfileArray) {

    //获得每一个缓存文件的路径

    NSString*subFilePath = [filePathstringByAppendingPathComponent:fileName];

    NSDictionary*attributes = [fileManagerattributesOfItemAtPath:subFilePatherror:nil];

    //NSLog(@"文件属性:%@",attributes);

    //每个子文件所占的字节大小

    longlongsize =[attributes[NSFileSize]longLongValue];

    fileSize += size;

    }

    //转为一兆(M)为单位

    _countFileSize= fileSize /1024.0/1024.0;

    NSLog(@"文件的储存大小:%f,,,,%lld",_countFileSize,fileSize);

    //

    //if (isClear == YES) {

    //NSString *count = [NSString stringWithFormat:@"%.0f", _countFileSize];

    //if ([count isEqualToString:@"0"]) {

    //[MBProgressHUD showMessage:@"清理完成" view:self.view];

    //isClear = NO;

    //}else{

    //[self countCacheFileSize];

    //}

    //}

    //

    //return _countFileSize;

    _numLabel.text= [NSStringstringWithFormat:@"缓存:%04fM",_countFileSize];

    }

    相关文章

      网友评论

          本文标题:iOS像360滚动圆球那样释放内存,并计算缓存

          本文链接:https://www.haomeiwen.com/subject/bgwpsttx.html