设置圆角、阴影

一、设置圆角的几种方式

1、代码中常常这样设置

//cornerRadius 设置为self.iconImage图片宽度的一半(仅针对正方形UIView)
self.iconImage.layer.cornerRadius = self.iconImage.frame.size.width/2;
self.iconImage.layer.masksToBounds = YES;

2、在Xib或Stroyboard中这样

设置圆角、阴影_第1张图片
yuanjiao.png

3、使用绘图,重绘一个圆形图片

    /**设置圆形图片(建议放到分类中使用) */
    - (UIImage *)circleImage{
      // 如果是长方形图片,就按最短的边来
        CGFloat w = self.size.width < self.size.height ? self.size.width : self.size.height;
        UIGraphicsBeginImageContext(CGSizeMake(w, w));
        UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, w, w)];
        [path addClip];
        [self drawAtPoint:CGPointZero];
        UIImage *circleImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
       return circleImage;
    }
性能方面:使用方式1、2设置的性能没有方式3性能好。因为使用图层过量会有卡顿现象,所有如果特别多的图片需要圆形、阴影处理的话,建议使用绘图方式。

二、设置阴影效果

    View.layer.shadowOffset = CGSizeMake(0, 0);  //x向右偏移,y向下偏移,设置成(0,0)表示不偏移
    View.layer.shadowColor = [UIColor blackColor].CGColor;   //阴影颜色
    View.layer.shadowOpacity = 1;  //阴影透明度,默认0
    View.layer.shadowRadius = 4;  //阴影半径,默认3

三、同时设置圆角和阴影效果

如果这样设置是这种效果会没有阴影(原因:使用masksToBounds会切掉阴影部分的图层)

        View.layer.cornerRadius = 10;
        View.layer.masksToBounds = YES;
        View.layer.shadowOffset = CGSizeMake(0, 0);
        View.layer.shadowColor = [UIColor blackColor].CGColor;
        View.layer.shadowOpacity = 1;
        View.layer.shadowRadius = 4;

解决方法就是不切,删除这行代码

        View.layer.masksToBounds = YES;

效果如如下:

设置圆角、阴影_第2张图片
IMG_1614.PNG

你可能感兴趣的:(设置圆角、阴影)