iOS中设置圆角的几种方法示例
前言
圆角(RounderCorner)是一种很常见的视图效果,相比于直角,它更加柔和优美,易于接受。但很多人并不清楚如何设置圆角的正确方式和原理。设置圆角会带来一定的性能损耗,如何提高性能是另一个需要重点讨论的话题。我查阅了一些现有的资料,收获良多的同时也发现了一些误导人错误。
1.使用layer属性
layer.backgroundColor=[UIColorcyanColor].CGColor;//给图层添加背景色 layer.contents=(id)[UIImageimageNamed:@"view_BG.png"].CGImage;//给图层添加背景图片 layer.cornerRadius=8;//将图层的边框设置为圆脚 layer.masksToBounds=YES;//隐藏边界 layer.borderWidth=5;//给图层添加一个有色边框 layer.borderColor=[UIColorcolorWithRed:0.52green:0.09blue:0.07alpha:1].CGColor; layer.shadowOffset=CGSizeMake(0,3);//设置阴影的偏移量 layer.shadowRadius=10.0;//设置阴影的半径 layer.shadowColor=[UIColorblackColor].CGColor;//设置阴影的颜色为黑色 layer.shadowOpacity=0.9;//设置阴影的不透明度
2.使用绘图设置圆角
/**设置圆形图片(放到分类中使用)*/ -(UIImage*)cutCircleImage{ UIGraphicsBeginImageContextWithOptions(self.size,NO,0.0);//获取上下文 CGContextRefctr=UIGraphicsGetCurrentContext();//设置圆形 CGRectrect=CGRectMake(0,0,self.size.width,self.size.height); CGContextAddEllipseInRect(ctr,rect);//裁剪 CGContextClip(ctr);//将图片画上去 [selfdrawInRect:rect]; UIImage*image=UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); returnimage; }
3.通过另一张mask图创建新图
首先需要一张mask图,然后将这张mask图和原图合成,得到带圆角的新图。效率和方法一类似,合成新图等同于在off-screen作图。该方法的优点是可以不局限于圆角,全凭mask图控制。
小结
如果要效率(例如要提高tableview的滚动帧数),就多用方法二。要方便,自然是方法一。如果需要的特殊形状UIBezierPath对象无法构成,则考虑方法三。
总结
以上就是这篇文章的全部内容了,希望本文的内容对各位iOS开发者们能带来一定的帮助,如果有疑问大家可以留言交流。谢谢大家对毛票票的支持。