您的位置:首页 > 移动开发 > IOS开发

IOS 之 CALayer详解

2014-11-13 17:20 393 查看
CALayer 是视图中真正绘图的一层。UIview主要是接受用户的交互。

每一个UIView 中 都包含CALayer 。

但是如果想对CALayer进行深层次的开发的话还的引入 

QuartzCore  框架 该框架是跨平台的,比如在开发mac osx 平台下开发,也是有该框架的。
也就是说在max osx 开发的软件也是有层CALayer 的概念的。
设置圆角

UIView * v = [[UIView alloc] init];
v.frame = CGRectMake(0, 0, 50, 50);
v.backgroundColor = [UIColor grayColor];
v.center =self.view.center;
[self.view addSubview:v];
//设置圆角
v.layer.cornerRadius = 25;

设置边框

//设置边框
v.layer.borderColor = [UIColor whiteColor].CGColor;
v.layer.borderWidth = 3.f;


设置阴影

//设置阴影  必须设置的三个属性
v.layer.shadowColor = [UIColor redColor].CGColor;
v.layer.shadowOffset = CGSizeMake(0, 10);
v.layer.shadowOpacity = 1.0f;


如果是在 UIImageView 中 设置图片  那么必须注意

UIImageView * imageview = [[UIImageView alloc] init];
imageview.frame = CGRectMake(0, 0, 50, 50);
imageview.backgroundColor = [UIColor grayColor];
imageview.center =self.view.center;
[self.view addSubview:imageview];
UIImage * image = [UIImage imageNamed:@"head.png"];
imageview.image = image;
imageview.layer.cornerRadius = 25;
//需要设置该属性 如果有图片
imageview.layer.masksToBounds = YES;

设置CALayer的行为方式

//平移属性
[imageview.layer setTransform:CATransform3DMakeTranslation(0, -100, 0)];
//缩放属性
[imageview.layer setTransform:CATransform3DMakeScale(1.0, 1.0, 1.0f)];
//旋转属性  M_PI_2 90° M_PI_4 45°  M_PI 360°  x , y ,z 轴 一般 改哪个给哪个值为1
[imageview.layer setTransform:CATransform3DMakeRotation(M_PI_4, 1, 0, 0)];


复习 KVC 换一种方式 

//通过KVC
[imageview.layer setValue:@100 forKeyPath:@"transform.translation.x"];
[imageview.layer setValue:@0.5 forKeyPath:@"transform.scale"];
[imageview.layer setValue:@M_PI_2 forKeyPath:@"transform.rotation.z"];


为什么是CGColor ?
因为MAC 开发平台下 没有 UIKIT框架  (UIColor 属于该框架下) 所以需要一个中介 来 使两个平台都可以使用也就是CGColor 中介
CATransForm3D 动画的使用    形变的方式有平移(translation)/缩放(scale) /旋转(rotation)

利用键值路径的去控制 使用方式 

transform.translation.x  transform.translation.y transform.translation.z
  平移

transform.scale.x
 transform.scale.y transform.scale.z
  修改缩放

transform.rotation.x  transform.rotation.y transform.rotation.z
   旋转

使用场景

    CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CALayer ios