一、设置圆角的几种方式
1、代码中常常这样设置
//cornerRadius 设置为self.iconImage图片宽度的一半(仅针对正方形UIView)
self.iconImage.layer.cornerRadius = self.iconImage.frame.size.width/2;
self.iconImage.layer.masksToBounds = YES;
2、在Xib或Stroyboard中这样
yuanjiao.png3、使用绘图,重绘一个圆形图片
/**设置圆形图片(建议放到分类中使用) */
- (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;
效果如如下:
IMG_1614.PNG
网友评论