美文网首页零碎知识点iOS Developer将来跳槽用
通过遮罩的方式设置图片圆角

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

作者: 皮乐皮儿 | 来源:发表于2017-12-08 14:53 被阅读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;
    

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

    相关文章

      网友评论

        本文标题:通过遮罩的方式设置图片圆角

        本文链接:https://www.haomeiwen.com/subject/itpeixtx.html