图层的基本使用 自定义图层 图层属性
2015-09-01 17:47
363 查看
UIView本身不具有显示图片的特性,显示是因为它的图层layer
@property (weak, nonatomic) IBOutlet UIView *redView;
// 设置阴影透明度
_redView.layer.shadowOpacity = 1;
// 设置阴影颜色
_redView.layer.shadowColor = [UIColor yellowColor].CGColor;
// 设置阴影圆角半径
_redView.layer.shadowRadius = 10;
// 设置圆角半径
_redView.layer.cornerRadius = 50;
// 设置边框半径
_redView.layer.borderColor = [UIColor whiteColor].CGColor;
// 设置边框半径
_redView.layer.borderWidth = 2;
2.@property (weak, nonatomic) IBOutlet UIImageView *imageView;
// 圆形裁剪
_imageView.layer.cornerRadius = 50;
// 超出layer边框的全部裁剪掉
_imageView.layer.masksToBounds = YES;
_imageView.layer.borderColor = [UIColor whiteColor].CGColor;
_imageView.layer.borderWidth = 2;
3- (void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event
{
[UIView animateWithDuration:1 animations:^{
// 缩放
_imageView.layer.transform = CATransform3DMakeRotation(M_PI, 1, 1, 0);
// 平移
_imageView.layer.transform = CATransform3DMakeTranslation(200, 200, 0);
// 缩放
_imageView.layer.transform = CATransform3DMakeScale(1, 0.5, 1);
// 利用KVC改变形变
NSValue *rotation = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 1, 1, 0)];
// [_imageView.layer setValue:rotation forKeyPath:@”transform”];
// [_imageView.layer setValue:@M_PI forKeyPath:@”transform.rotation”];
// [_imageView.layer setValue:@0.5 forKeyPath:@”transform.scale”];
// 平移x轴
[_imageView.layer setValue:@200 forKeyPath:@”transform.translation.x”];
}];
}
二,自定义图层
1. 创建一个图层
CALayer *layer = [CALayer layer];
2. 设置尺寸
layer.bounds = CGRectMake(0, 0, 100, 100);
3. 设置位置
layer.position = CGPointMake(100, 100);
4. 设置颜色
layer.backgroundColor = [UIColor redColor].CGColor;
5. 设置内容
layer.contents = (__bridge id)[UIImage imageNamed:@”阿狸头像”].CGImage;
[self.view.layer addSublayer:layer];
通过CALayer,就能做出跟UIView一样的界面效果。
但是对比CALayer,UIView多了一个事件处理的功能,也就是说CALayer不能处理用户的触摸事件,而UIView是可以的。
所以所处理的事件如果不需要处理用户事件,二者选谁都无所谓
三.CALayer的两个重要属性:position和anchorPoint
CGPoint position用来设置CALayer在父层中的位置 以父层的左上角为原点(0,0)
CGPoint anchorPoint称为“定位点”,“錨点”决定着CALayer身上的哪个点会在position属性所在的位置 以自己左上角为原点(0,0)它的x和y的取值范围都为0~1,默认值为(0.5, 0.5),意味着锚点在layer的中间
@property (weak, nonatomic) IBOutlet UIView *redView;
// 设置阴影透明度
_redView.layer.shadowOpacity = 1;
// 设置阴影颜色
_redView.layer.shadowColor = [UIColor yellowColor].CGColor;
// 设置阴影圆角半径
_redView.layer.shadowRadius = 10;
// 设置圆角半径
_redView.layer.cornerRadius = 50;
// 设置边框半径
_redView.layer.borderColor = [UIColor whiteColor].CGColor;
// 设置边框半径
_redView.layer.borderWidth = 2;
2.@property (weak, nonatomic) IBOutlet UIImageView *imageView;
// 圆形裁剪
_imageView.layer.cornerRadius = 50;
// 超出layer边框的全部裁剪掉
_imageView.layer.masksToBounds = YES;
_imageView.layer.borderColor = [UIColor whiteColor].CGColor;
_imageView.layer.borderWidth = 2;
3- (void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event
{
[UIView animateWithDuration:1 animations:^{
// 缩放
_imageView.layer.transform = CATransform3DMakeRotation(M_PI, 1, 1, 0);
// 平移
_imageView.layer.transform = CATransform3DMakeTranslation(200, 200, 0);
// 缩放
_imageView.layer.transform = CATransform3DMakeScale(1, 0.5, 1);
// 利用KVC改变形变
NSValue *rotation = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 1, 1, 0)];
// [_imageView.layer setValue:rotation forKeyPath:@”transform”];
// [_imageView.layer setValue:@M_PI forKeyPath:@”transform.rotation”];
// [_imageView.layer setValue:@0.5 forKeyPath:@”transform.scale”];
// 平移x轴
[_imageView.layer setValue:@200 forKeyPath:@”transform.translation.x”];
}];
}
二,自定义图层
1. 创建一个图层
CALayer *layer = [CALayer layer];
2. 设置尺寸
layer.bounds = CGRectMake(0, 0, 100, 100);
3. 设置位置
layer.position = CGPointMake(100, 100);
4. 设置颜色
layer.backgroundColor = [UIColor redColor].CGColor;
5. 设置内容
layer.contents = (__bridge id)[UIImage imageNamed:@”阿狸头像”].CGImage;
[self.view.layer addSublayer:layer];
通过CALayer,就能做出跟UIView一样的界面效果。
但是对比CALayer,UIView多了一个事件处理的功能,也就是说CALayer不能处理用户的触摸事件,而UIView是可以的。
所以所处理的事件如果不需要处理用户事件,二者选谁都无所谓
三.CALayer的两个重要属性:position和anchorPoint
CGPoint position用来设置CALayer在父层中的位置 以父层的左上角为原点(0,0)
CGPoint anchorPoint称为“定位点”,“錨点”决定着CALayer身上的哪个点会在position属性所在的位置 以自己左上角为原点(0,0)它的x和y的取值范围都为0~1,默认值为(0.5, 0.5),意味着锚点在layer的中间
相关文章推荐
- php事件钩子
- 【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】
- 内存管理和 Block
- nyoj 502 筹建工程【最小生成树】
- IOS判断手机设备是否支持照相功能
- canvas
- 解决ViewPager在ScrollView中失效的问题
- AndroidStudio插件GsonFormat快速实现JavaBean
- 设置table分割线靠左边0距离对齐
- [转]ArcGIS Runtime SDK For Android 授权方法(去除水印)
- 使用Axure RP原型设计实践08,制作圆角文本框
- angularjs filter 详解
- ref和out的用法说明举例(转)
- ecshop调用后台指定广告位下所有广告循环
- C 截取输出
- 新人开博,自娱自乐一下。
- 从零开始写个编译器吧 - 单词化简述(Tokenization)
- 属性资源与Android命名空间
- node.js中npm安装的模块在哪个目录下
- MD5加密代码