IOS CALayer基本使用 (图层)
● 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView 的layer属性可以访问这个层
@property(nonatomic,readonly,retain) CALayer *layer;
● 换句话说,UIView本身不具备显示的功能,是它内部的层才有显示功能
CALayer的基本使用
● 通过操作CALayer对象,可以很方便地调整UIView的一些外观属性,比如: ➢ 阴影
➢ 圆角大小
➢ 边框宽度和颜色
➢......
● 还可以给图层添加动画,来实现一些比较炫酷的效果
CALayer的属性
@property CGRect bounds;
● 位置(默认指中点,具体由anchorPoint决定)
@property CGPoint position;
● 锚点(x,y的范围都是0-1),决定了position的含义
@property CGPoint anchorPoint;
● 背景颜色(CGColorRef类型)
@property CGColorRef backgroundColor;
● 形变属性
@property CATransform3D transform;
@property CGColorRef borderColor;
● 边框宽度
@property CGFloat borderWidth;
● 圆角半径
@property CGColorRef borderColor;
● 内容(比如设置为图片CGImageRef)
@property(retain) id contents;
UIView和CALayer的选择
● 既然CALayer和UIView都能实现相同的显示效果,那究竟该选择谁好呢?
➢其实,对比CALayer,UIView多了一个事件处理的功能。也就是说,CALayer不能处理用户的触摸事件,而UIView可以
➢ 所以,如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要跟用户 进行交互,用UIView或者CALayer都可以
➢ 当然,CALayer的性能会高一些,因为它少了事件处理的功能,更加轻量级
CALayer有2个非常重要的属性:position和anchorPoint
➢ 以父层的左上角为原点(0, 0)
● @propertyCGPointanchorPoint;
➢ 称为“定位点”、“锚点”
➢ 决定着CALayer身上的哪个点会在position属性所指的位置
➢ 以自己的左上角为原点(0, 0)
➢ 它的x、y取值范围都是0~1,默认值为(0.5,0.5)
@interface NJViewController ()
@property (weak, nonatomic) IBOutlet UIView *customView;
@property (weak, nonatomic) IBOutlet UIImageView *iconView; @end @implementation NJViewController - (void)viewDidLoad
{
[super viewDidLoad];
} - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
/*
// self.iconView.transform = CGAffineTransformMakeTranslation(0, -100); // self.iconView.layer.transform = CATransform3DMakeTranslation(0, -100, 0); // NSValue *v = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, -200, 0)];
// [self.iconView.layer setValue:v forKeyPath:@"transform"]; [self.iconView.layer setValue:@(-100) forKeyPath:@"transform.translation.x"];
*/ /*
// self.iconView.transform = CGAffineTransformMakeRotation(M_PI_4);
// self.iconView.layer.transform = CATransform3DMakeRotation(M_PI_4, 0, 0, 9998);// X, Y, Z
// [self.iconView.layer setValue:@(M_PI_2) forKeyPath:@"transform.rotation.z"];
*/ // self.iconView.transform = CGAffineTransformMakeScale(0.5, 0.5);
self.iconView.layer.transform = CATransform3DMakeScale( , , );
} - (void)test2
{
self.iconView.layer.borderWidth = ;
self.iconView.layer.borderColor = [UIColor purpleColor].CGColor;
self.iconView.layer.cornerRadius = ;
// 设置超出主图层的部分剪切掉
// self.customView.clipsToBounds = YES;
self.iconView.layer.masksToBounds = YES;
self.iconView.layer.bounds = CGRectMake(, , , );
self.iconView.layer.position = CGPointMake( , );
} - (void)test
{
/**/
// 设置layer边框
self.customView.layer.borderWidth = ;
// 设置layer边框颜色
self.customView.layer.borderColor =[UIColor blackColor].CGColor;
// 设置layer的圆角(设置主图层的圆角)
self.customView.layer.cornerRadius = ; // 设置超出主图层的部分剪切掉
// self.customView.clipsToBounds = YES;
// self.customView.layer.masksToBounds = YES; // 设置的image不是展示在主图层上的, 是展示在子图层上的
self.customView.layer.contents = (id)[UIImage imageNamed:@"me"].CGImage; // 设置阴影颜色
self.customView.layer.shadowColor = [UIColor purpleColor].CGColor;
// 设置阴影偏移位
// 如果为正数, 代表往右边偏移
self.customView.layer.shadowOffset = CGSizeMake(, );
// 设置阴影透明的 0~1 1完全不透明 0 完全透明
self.customView.layer.shadowOpacity = ;} @end
IOS CALayer基本使用 (图层)的更多相关文章
- iOS - CALayer 绘图层
1.CALayer 绘图层 在 iOS 系统中,你能看得见摸得着的东西基本上都是 UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是 UIView.其实 UIView 之 ...
- IOS CALayer的属性和使用
一.CALayer的常用属性 1.@propertyCGPoint position; 图层中心点的位置,类似与UIView的center:用来设置CALayer在父层中的位置:以父层的左上角为原点( ...
- iOS CALayer总结——图层几何
最近看了一下关于图层和动画的内容,所以写了一份总结,算是对这些内容的汇总吧,都是一些简单的基础知识,不知道大家都了不了解. 除了和用户的交互之外,图层的很多属性和视图基本上都是一样的,今天就先从CAL ...
- IOS CALayer(二)
UIview内部有个默认的CALayer对象层,虽然我门不可以重新创建它,但是我门可以再其上面添加子层. 我们知道,UIView有 addSubview:方法,同样,CALayer也有addSubla ...
- IOS CALayer是什么
大家在开发IOS程序时,经常会遇到self.view.layer这个东西,我以前也是不求甚解,后来觉得有必要整理下. 简单介绍layer: 在IOS中,你能看得见摸得着的东西都是UIView,比如一个 ...
- iOS CALayer使用
CALayer使用 iOS的设备中,我们之所以能看到各种各样的控件.文字.图片,都是Core Animation框架的功劳.它通过图层的合成,最终显示在屏幕上.而今天这篇文章讲的就是Core Anim ...
- iOS CALayer应用详解
跟着大神一起进步,本篇博客原文地址:http://blog.csdn.net/hello_hwc?viewmode=contents 一 CALayer是什么? Layers是绘图和动画的基础, L ...
- iOS - CALayer相关(CATransform3D)
一.图层的几何 图层的几何简单通俗,图层的所有几何属性(包括矩阵变换),都可以有隐式和显式动画. 图层几何的属性: 1.position是CGPoint值,她指定图层相对于她图层的位置,该值基于父图层 ...
- IOS CALayer(一)
对于一个app的好坏,我们首要判断的便是app的界面,而界面的建立则是在图形的处理基础上的,说到图形处理又不得不提及Quartz2D,CALayer. 在iOS系统中,你能看得见摸得着的东西基本上都是 ...
随机推荐
- mysql的性能优化总结
经验是从别人那里拿来的,不想直接复制黏贴,想亲自总结下,巴拉巴拉.........进入正题吧 一.为查询加入缓存 1.检查数据库是否开启缓存:show variables like '%query_c ...
- Codeforces Round #527 (Div. 3)C(多重集,STRING)
#include<bits/stdc++.h>using namespace std;const int maxn=1e6+7;pair<string,int>p[maxn]; ...
- explain SQL语句()
坊间有传言:MySQL性能优化有个神器,叫做explain,它可以对select语句进行分析并且输出详细的select执行过程的详细信息,让开发者从这些信息中获得优化的思路. 下面来讲讲这个MySQL ...
- WampServer的安装
首先安装好Microsoft Visual C++ 然后再安装WampServer 安装过程很简单 错误解决 运行后为黄色图标(成功运行应该为绿色图标) 解决办法: 1.80端口是否被占用 你的80端 ...
- luoguP4389 付公主的背包
luogu 显然这是个背包题 显然物品的数量是不用管的 所以考虑大小为\(v\)的物品可以装的体积用生成函数表示一下 \[ f(x)=\sum_{i=0}^{+\infty}x^{vi}=\frac{ ...
- 扩展JMeter - 创建自定义函数 - String Joiner (翻译)
JMeter是测试自动化社区中最好的开源工具之一.它提供了所有可能的扩展,可以快速提供我们的测试脚本.为了让我们的生活更轻松,它还让我们通过实现几个接口来提出我们自己的插件. 在本文中,让我们看看如何 ...
- ubuntu 的 python从2.* 升级到3.*
1.在ubuntu 的终端中用代码下载最新的Python sudo apt-get install python3 2.用命令删除usr/bin/目录下的默认python link文件root@sal ...
- 【ACM】棋盘覆盖 - 大数除
棋盘覆盖 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在一个2k×2k(1<=k<=100)的棋盘中恰有一方格被覆盖,如图1(k=2时),现用一缺角的 ...
- (转)深入浅出linux系统umask值及其对应的文件权限讲解
浅出linux系统umask值及其对应的文件权限讲解 原文:http://blog.51cto.com/oldboy/1060032 缘起:1.此文的撰写特别为感谢51cto的博客工作人员和领导,老男 ...
- DM设备的创建与管理
DM(Device Mapper)即设备映射(逻辑设备). MD和DM是Linux内核上2种工作机制(实现逻辑设备)不同的模块. Physical Volume(PV): 物理卷 底层 ...