给图片设置圆角通常情况下我们会直接设置imageView.layer.coreners,这是UIView自带的属性,但是有时候在列表中多处用到圆角设置,用这个就会影响性能。至于如何优化tableView因为圆角而导致的性能问题,我这里不多说,本文介绍的方法也是优化方式之一。再者,如果有需求中需要图片的某一个角,或者某几个角为圆角,直接设置layer的方法就力不从心了,下面开始本文的方式介绍,主要展现形式是代码。
如图:
屏幕快照 2017-12-08 14.47.30.png
我想要的是左上和右上的图片圆角,其他的不变,那么这个时候要如何处理呢?借助强大的贝塞尔曲线就可以解决这种情况:
//给图片添加圆角
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.coverImageView.bounds byRoundingCorners:UIRectCornerTopRight | UIRectCornerTopLeft cornerRadii:CGSizeMake(8.0, 8.0)];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.frame = self.coverImageView.bounds;
shapeLayer.path = path.CGPath;
self.coverImageView.layer.mask = shapeLayer;
主要代码就这些,是不是很方便呢?
ps:图中还有个阴影效果,下面我把阴影的设置代码贴出来,有兴趣的朋友可以借鉴一下,或者直接在留言区交流:
self.containerView.layer.shadowColor = YGRGB(213, 204, 204, 1.0).CGColor;
self.containerView.layer.shadowOffset = CGSizeMake(0, 4);
self.containerView.layer.shadowOpacity = 0.8;
self.containerView.layer.shouldRasterize = YES;
self.containerView.layer.rasterizationScale = [UIScreen mainScreen].scale;
self.containerView.layer.shouldRasterize = YES;
self.containerView.layer.rasterizationScale = [UIScreen mainScreen].scale;
这两个设置可以避免离屏渲染带来的性能问题
网友评论