美文网首页
iOS中让控件显示圆形图片

iOS中让控件显示圆形图片

作者: 别有洞天i | 来源:发表于2016-10-20 21:26 被阅读0次

    本文一共提供三种控件显示圆形图片的方法,针对不同的使用场景,请自行选择合适的方法。

    方法一:

    1.1拿到图片UIImage *image;

    1.2开启一个图形上下文 设置图形上下文的siz 等于图片size;

    UIGraphicsBeginImageContext(image.size);
    

    1.3利用贝塞尔曲线,设置一个圆形裁剪区域(设置一个矩形的内切圆/内切椭圆);

    UIBezierPath *path =[UIBezierPath bezierPathWithOvalInRect:CGRectMake( 0, 0, image.size.width, image.size.height)];
    

    1.4拿到贝塞尔曲线对象 添加裁剪;

    [path addClip];
    

    1.5将图片画到图像上下文上
    由于图像上下文size和图片的size设置一样 所以可以设置point为零点;

    [image drawAtPoint:CGPointZero];
    

    1.6从当前的图像上下文中获取图片;

    image = UIGraphicsGetImageFromCurrentImageContext();
    

    1.7虽然此时已经拿到 裁剪变为圆形的图片image,但是千万不要忘了最后还有重要的一个步骤,那就是关闭图形上下文,这个步骤特别容易让人忘记,切记!

    UIGraphicsEndImageContext();
    

    简单的几个步骤就完成了一个正圆形图片的裁剪功能,当然还有我们更加简单的方式哦,那就是接下来的方法二。

    方法二:

    2.1拿到你要设置的UIImageView *imageV;
    2.2设置imageV 的layer层的圆角半径;
    2.3拿到imageV的layer层,并且告诉layer将位于它之下的layer都遮盖住;
    两个步骤解决,简单明了,但是此方法会带来一定的性能问题。
    即:会触发离屏渲染,比较消耗性能。比如当一个页面上有十几头像这样设置了圆角,那么会明显感觉到卡顿。
    注意:png图片UIImageView处理圆角是不会产生离屏渲染的。(ios9.0之后不会离屏渲染,ios9.0之前还是会离屏渲染)。
    代码如下:

     imageV.layer.cornerRadius = self.iconImageV.tml_width *0.5;
     imageV.layer.masksToBounds =YES;
    

    当然,如果你一行代码也不写 也想设置圆角也是可以的,那就是我么接下来的第三种方法。

    方法三:

    如果你是在xib中添加的UIImageView的话,这里还提供另外一种不需要编写一行代码的方法,详细请参照如下图片中指示:

    第一个属性:layer.cornerRadius

    第二个属性:layer.masksToBounds

    第一步:

    Snip20161020_1.png

    第二步:

    Snip20161020_4.png

    总结:

    以上三种方法都可以达到同样的效果,具体选择哪一种,视情况而定!
    此外,第三中方法中涉及运行时方面的知识,具体原理就不在此做过多解释。同时也是三种方法中最为装B的方法,温馨提示:装B虽好,但要慎用!

    相关文章

      网友评论

          本文标题:iOS中让控件显示圆形图片

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