zoukankan      html  css  js  c++  java
  • UITableView性能-圆角图片

    圆角图片因为GPU渲染会影响性能

    参考:http://www.cocoachina.com/ios/20150803/12873.html

    http://blog.sina.com.cn/s/blog_671d2e4f0101cxpl.html

    http://www.cnblogs.com/thefeelingofsimple/archive/2013/02/20/2918547.html 

    instruments用的不多,我直接循环了几个圆角,3种方法试了下

     image.layer.cornerRadius = 8;
     image.layer.masksToBounds = YES;

    上面效率是最低的,

    另外的重写draw方法,和mask图与原图覆盖生成新图,效率感觉差不多,等后面熟悉了instruments在测试下,

    重写drawRect,(-_-,要弄个新的属性才会走这里,本菜鸟还不懂啊,先弄了个UIImageView用它自己的image走都不走这里。。。图形这方面设计太少了)

    //注意背景色要和cell的背景色设置一致哦,不然-0-
    - (void)drawRect:(CGRect)rect {
        CGRect bounds = self.bounds;
        [[UIColor whiteColor]set];
        UIRectFill(bounds);
        [[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:8.0] addClip];
        [self.image drawInRect:bounds];
    }

    - (void)setImage:(UIImage *)image {
        _image = image;
        //需要这一步,需要刷新,不然显示会出问题
        [self setNeedsDisplay];
    }

    - (void)dealloc {
        self.image = nil;
    }

    mask图与原图覆盖生成新图

    - (UIImage *)imageByComposingImage:(UIImage *)image withMaskImage:(UIImage *)maskImage {
        CGImageRef maskImageRef = maskImage.CGImage;
        CGImageRef maskRef = CGImageMaskCreate(CGImageGetWidth(maskImageRef),
                                               CGImageGetHeight(maskImageRef),
                                               CGImageGetBitsPerComponent(maskImageRef),
                                               CGImageGetBitsPerPixel(maskImageRef),
                                               CGImageGetBytesPerRow(maskImageRef),
                                               CGImageGetDataProvider(maskImageRef), NULL, false);
        
        CGImageRef newImageRef = CGImageCreateWithMask(image.CGImage, maskRef);
        CGImageRelease(maskRef);
        UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
        CGImageRelease(newImageRef);
        
        return newImage;
    }

    补充:mask图与原图覆盖生成新图可以自定义任意形状的图哦

    测试demo链接:http://pan.baidu.com/s/1qWCDprY

  • 相关阅读:
    O2O、B2B、C2C(通俗讲解)
    前端 $.parseJson()
    django反向解析传参
    从url(地址栏)获取参数:Jquery中getUrlParam()方法的使用
    Django:前后端分离后联调给前端传数据
    xpath 中 [<Element a at 3985984dj343>]
    sumafan:python爬虫多线程爬取数据小练习(附答案)
    window安装mysql(详细步骤)
    sqlserver从xlsx读取数据
    第一个kotlin程序
  • 原文地址:https://www.cnblogs.com/hxwj/p/4836077.html
Copyright © 2011-2022 走看看