CALayer的一些常用属性

来源:互联网 发布:虚拟网络环境 编辑:程序博客网 时间:2024/05/22 09:49

UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它。它本身完全是由CoreAnimation来实现的(Mac下似乎不是这样)。它真正的绘图部分,是由一个叫CALayer(Core Animation Layer)的类来管理。UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等,实际上内部都是在访问它所包含的CALayer的相关属性。
CALayer(层)是屏幕上的一个矩形区域,在每一个UIView中都包含一个根CALayer,在UIView上的所有视觉效果都是在这个Layer上进行的。
CALayer外形特征主要包括:

1、层的位置,尺寸
CALayer有2个非常重要的属性:position和anchorPoint
@property CGPoint position;
用来设置CALayer在父层中的位置,以父层的左上角为原点(0, 0)
@property CGPoint anchorPoint;
称为“定位点”、“锚点”
决定着CALayer身上的哪个点会在position属性所指的位置
以自己的左上角为原点(0, 0)
它的x、y取值范围都是0~1,默认值为(0.5, 0.5)

 backLayer.bounds = CGRectMake(50, 50, 100, 100); //这里相当于设置中心点坐标 backLayer.position = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height/2);

2、背景色

backLayer.backgroundColor = [UIColor orangeColor].CGColor;//这里需要用UIColor的CGColor属性,CGColor主要用于CoreGaphics框架之中,CGColor其实是个结构体

3、内容(可以填充图片或者使用Core Graphics绘制的内容)

4、矩形是否使用圆角

backLayer.cornerRadius = 5.0f;//设置圆角半径

5、阴影的设置

backLayer.shadowOffset = CGSizeMake(0, 3); //设置阴影的偏移量 backLayer.shadowRadius = 10.0;  //设置阴影的半径 backLayer.shadowColor = [UIColor blackColor].CGColor; //设置阴影的颜色为黑色 backLayer.shadowOpacity = 0.9; //设置阴影的不透明度

下面给两段代码 可以体验以下 设置UIView和直接设置CALayer的不同
//更改view的layer属性

UIView *view = [[UIView alloc] init];    view.backgroundColor = [UIColor whiteColor];    view.frame = CGRectMake(20, 30, self.view.frame.size.width - 40, 300);    view.layer.borderWidth = 1.0f;//设置view的边框宽度    view.layer.borderColor = [UIColor colorWithRed:174/255.0 green:174/255.0 blue:173/255.0 alpha:1].CGColor;//设置view的边框颜色    view.layer.cornerRadius = 5;//设置圆角的属性    UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:view.bounds];//使用UIBezierPath类可以创建基于矢量的路径。此类是Core Graphics框架关于path的一个封装。使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状    view.layer.shadowColor = [UIColor blackColor].CGColor;    view.layer.shadowOffset = CGSizeMake(0.0f, 5.0f);    view.layer.shadowOpacity = 0.5f;    view.layer.shadowPath = shadowPath.CGPath;    [self.view addSubview:view];

直接利用layer绘制

 UIView *bgView = [[UIView alloc] initWithFrame:self.view.bounds];    bgView.backgroundColor  = [UIColor whiteColor];    self.view = bgView;    CALayer *backLayer = [[CALayer alloc] init];    backLayer.backgroundColor = [UIColor orangeColor].CGColor;    backLayer.cornerRadius = 5.0f;    backLayer.bounds = CGRectMake(50, 50, 100, 100);    backLayer.position = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height/2);    UIBezierPath *shadowpath = [UIBezierPath bezierPathWithRect:backLayer.bounds];    backLayer.shadowOffset = CGSizeMake(0, 3); //设置阴影的偏移量    backLayer.shadowRadius = 10.0;  //设置阴影的半径    backLayer.shadowColor = [UIColor blackColor].CGColor; //设置阴影的颜色为黑色    backLayer.shadowOpacity = 0.9; //设置阴影的不透明度    backLayer.shadowPath = shadowpath.CGPath;    [self.view.layer addSublayer:backLayer];
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 七个月的宝宝晚上睡觉总醒怎么办 紫薯和番茄一起吃了怎么办 1当半宝宝喝温开水后打隔怎么办 婴儿屁股拉便便肛门有点烂了怎么办 婴儿便便之后肛门就红怎么办 50天的宝宝三天不拉大便怎么办 两个月宝宝不拉屎只放屁怎么办 两个月大宝宝两天没拉屎怎么办 两个月宝宝三天没拉大便怎么办 5个月宝宝3天没拉大便怎么办 4个月宝宝3天没拉大便怎么办 20个月的宝宝大便干燥怎么办 20个月宝宝大便间隔三天怎么办 两个多月的宝宝四天没大便怎么办 两个多月的宝宝几天没大便怎么办 2个月3天没大便怎么办 两个月大的宝宝发烧40度怎么办 两个月大的宝宝感冒了怎么办 四个月宝宝拉水样大便要怎么办 六个月的宝宝咳嗽有痰怎么办 未满月的宝宝大便脓状怎么办 五个月的宝宝总是吃手怎么办 小孩子学数字怎么也学不会怎么办 小孩学数字老是学不会该怎么办 只买了大人票忘买儿童的了怎么办 铝合金滑动门没轨道安纱门怎么办 移门衣柜门与柜体有冶缝隙怎么办 推拉门关门时撞门框声音大怎么办 两岁宝宝夏天不盖被子怎么办 家里有好多会爬的小黑虫怎么办 刚贴的壁纸怎么发霉了怎么办 晚上睡觉一熄灯有许多小虫子怎么办 一岁宝宝夏天爱哭不爱吃饭怎么办 合肥房子卖了户口没地方迁怎么办 忌作灶的日子新房装橱柜了怎么办 刮水泥浆的墙面刮不住腻子怎么办 小学二年级孩子偷钱 老师怎么办 发现自己读初中的儿子偷钱怎么办? 做错事了得不到亲人的原谅怎么办? 窗口 窗套与墙缝隙大怎么办 中班小孩还不会认1到10怎么办