CALayer--设置UIView圆角,裁剪子视图,快速圆形UIView

来源:互联网 发布:淘宝可以追加几次评论 编辑:程序博客网 时间:2024/06/02 19:41
                 一、简单介绍

在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。

其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层

@property(nonatomic,readonly,retain) CALayer *layer; 

当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示

换句话说,UIView本身不具备显示的功能,拥有显示功能的是它内部的图层。


二、简单使用

  UIView之所以能够显示,完全是因为内部的CALayer对象。因此,通过操作这个CALayer对象,可以很方便地调整UIView的一些界面属性,比如:阴影、圆角大小、边框宽度和颜色等。


通过layer设置边框为圆角

  //设置圆角

    self.iconView.layer.cornerRadius=12;

   

   //设置超过子图层的部分裁减掉

/**

有两种方法,一种是UIKit下使用的方法,另一种是CALayer下使用的方法

*/

    self.iconView.layer.masksToBounds=YES;

    //UI框架中使用的方法

    //裁剪,子视图超出部分不显示

    // self.iconView.clipsToBounds=YES;


有时候需要快速的创建一些圆形的UIView,UIButton之类的,如果有时间自己封装控件,使用CG绘制当然很好,但是如果没有时间,那么就使用CALayer的特性来做吧。

UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

button.frame = CGRectMake(20.f40.f120.f120.f);

button.layer.cornerRadius = 60;

button.layer.masksToBounds = YES;

button.layer.borderWidth = 1.0;

button.layer.borderColor = [UIColor blueColor].CGColor;

[button setTitle:@"圆按钮" forState:UIControlStateNormal];

[self.view addSubview:button];

想要实现圆形,需要将layer的cornerRadius(角半径)的大小设置为button宽高的一半。

当然,你一定要将button的width和height设置为等值。



0 0
原创粉丝点击