UITableView性能-圆角图片
2015-09-24 18:04
549 查看
圆角图片因为GPU渲染会影响性能
参考:/article/1318655.html
http://blog.sina.com.cn/s/blog_671d2e4f0101cxpl.html
/article/5751723.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
参考:/article/1318655.html
http://blog.sina.com.cn/s/blog_671d2e4f0101cxpl.html
/article/5751723.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
相关文章推荐
- UI - UIImageViewAndSlider
- Run as ant build每次都执行两次-问题解决
- UI - UISegmentedControl
- apue-intro
- UI - UIImageViewAndUISwipeGestureRecognizer
- UI - Delegate模式
- easyui表单验证easyui-validatebox
- ZOJ.2481 Unique Ascending Array【子集】 2015/09/24
- 设计模式 - 建造者模式(Builder)
- UITableView 频繁刷新 闪屏现象及解决方法
- UI - TargetAction模式
- POJ 1904--King's Quest 【经典建模 && SCC】
- UI - iOS事件之TouchEnvent
- 《iOS Human Interface Guidelines》——Designing for iOS
- UIKit重写UIButton自定义复选框UICheckBox
- cache4j轻量级java内存缓存框架,实现FIFO、LRU、TwoQueues缓存模型
- 容器request,使用request能够获得什么?
- 一句话去除UITableView底部多余行及分割线
- UIViewContentMode各类型效果
- HDU 4057 Rescue the Rabbit 【AC自动机+状压DP】