我们在cell中,经常需要设置imageView的圆角。但是你如果把cornerRadius和masksToBounds放在一起用,则会导致离屏渲染,影响性能。下面给出一个不影响性能的设置圆角方法,具体看这个DEMO
UIImage *image = [[UIImage imageNamed:@"callAd-03.jpg"] circleImage];
//当使用大图片时请用这个方法,不会有缓存
NSString *path = [[NSBundle mainBundle] pathForResource:@"callAd-03" ofType:@"jpg"];
UIImage *thumbnail = [UIImage imageWithContentsOfFile:path];
注意一个细节:
你需要使用背景颜色与父视图的背景颜色一致。因为此时我们没有设置 masksToBounds,因此超出圆角的部分依然会被显示。因此,你不应该再使用背景颜色,可以在绘制圆角矩形时设置填充颜色来达到类似效果。
在为 UIImageView 添加圆角时,请确保 image 属性不是 nil,否则这个设置将会无效。
关于imageView:
<small>UIViewContentModeScaleToFill :缩放图片,使图片充满容器,属性会导致图片变形。
UIViewContentModeScaleAspectFit:会保证图片比例不变,而且全部显示在ImageView中,这意味着ImageView会有部分空白,不会填充整个区域。
UIViewContentModeScaleAspectFill:也会证图片比例不变,但是是填充整个ImageView的,可能只有部分图片显示出来。
Top,Left,Right等等就是将突破放在View中的位置进行调整。
内容模式有利于重复使用view的内容,如果你想自定义视图并在缩放和计算操作期间重绘它们,可以使用UIViewContentModeRedraw值,设置该值将使系统调用drawRect:方法来响应视图的几何结构的改变,一般情况下,应该尽量避免使用该值。</small>