零碎知识点iOS Developer将来跳槽用

通过遮罩的方式设置图片圆角

2017-12-08  本文已影响83人  皮乐皮儿

给图片设置圆角通常情况下我们会直接设置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;

这两个设置可以避免离屏渲染带来的性能问题

上一篇 下一篇

猜你喜欢

热点阅读