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系统中,你能看得见摸得着的东西基本上都是 ...
随机推荐
- vs2013提交项目到github
提交项目之前必须先安装Git,下载地址:https://git-scm.com/download/win 1.登录Github后,在顶部导航栏选择New repository: 2.打开Create ...
- window下安装composer步骤(linux待研究)
window下安装composer步骤--注意(安装完之后需要重启电脑才能生效) 转发:https://blog.csdn.net/wengedexiaozao/article/details/798 ...
- 深入理解C/C++ [Deep C (and C++)]
编程是困难的,正确的使用C/C++编程尤其困难.确实,不管是C还是C++,很难看到那种良好定义并且编写规范的代码.为什么专业的程序员写出这样的代码?因为绝大部分程序员都没有深刻的理解他们所使用的语言. ...
- day23作业详解
1.题目 2.题目详解 点击查看详细内容 1. 1-1 封装 把功能封装到类中 class Message(object): def email(self):pass def msg(self):pa ...
- Django框架base.py源码
url.py文件 from django.conf.urls import url from django.contrib import admin from app_student import v ...
- HTTP的一些理解
URI是Uniform Resource Identifier的缩写,统一资源标识符.URI用字符串标识某一互联网资源,而URL标识资源的地点(互联网上所处的位置).可见URL是URI的子集. 典型的 ...
- ubuntu下ganglia3.7.2编译安装
一.介绍 ganglia主要包括gmond和gmeta 1.gmond用于收集监测数据,可以发送也可以接收在同一个组播或单播通道上的统计信息.gmond有两个角色,一个是发送者,另一个是接收者.当mu ...
- Python 装饰器的形成过程
装饰器 定义:本质是函数,(装饰其他函数),即为其他函数添加附加功能. 原则: 1.不能修改被装饰的函数的源代码: 2.不能修改被装饰的函数的调用方式. 实现装饰器知识储备: ...
- pat1099. Build A Binary Search Tree (30)
1099. Build A Binary Search Tree (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...
- 有趣的 验证JS只能输入正整数
<html> <head> <title>只能输入正整数</title> </head> <body> 兑换数量:<inp ...