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"];