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系统中,你能看得见摸得着的东西基本上都是 ...
随机推荐
- [CentOS7] 常用工具 之 差异备份工具 rdiff-backup
差异备份: rdiff-backup ==> 用于累积差异备份,加上自己写的shell script,每日备份,效果更佳 先用yum search rdiff-backup看看是否yum源含有r ...
- java模拟简易按键精灵
很多小伙伴们都有过抢课的经历,有时候抢不到自己想上的课,只能盼望有人退选,可是很多时候别人退选了,但是很快又被别人抢走了,我们不可能时刻盯着电脑, 这时候如果有一个抢课的程序岂不是很棒.. 出于这个目 ...
- 猜拳游戏三局两胜------java实现代码
package com.javasm.exerices02; import java.util.ArrayList; import java.util.List; import java.util.R ...
- 洛谷P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows
P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a u ...
- 洛谷P3146 [USACO16OPEN]248
P3146 [USACO16OPEN]248 题目描述 Bessie likes downloading games to play on her cell phone, even though sh ...
- Ryzen 移动平台上安装 Gentoo Linux
Linux 内核对于跟进支持 Ryzen 移动低压 CPU 的热情似乎和市面上寥寥无几的 Ryzen 笔记本热度十分吻合.虽然从 Linux 4.11 起就对 Ryzen 桌面 CPU 有较好的支持, ...
- C 语言实例 - 计算一个数的 n 次方
C 语言实例 - 计算一个数的 n 次方 计算一个数的 n 次方,例如: ,其中 为基数, 为指数. 实例 - 使用 while #include <stdio.h> int main() ...
- angular中[hidden]="expression"注意事项
[hidden]="expression",右侧的表达式尽量使用布尔值:虽然比较运算符也可以达到效果,但时常会出现一些莫名其妙的错误.
- 练习十三:水仙花数,用for循环实现
水仙花数是指一个n位正整数(n>=3),他得每个位上得数字得n次幂之和等于它本身(例如:1^3+5^3+3^3=153) for i in range(101,1000): #3位数得水仙花数 ...
- 练习六:斐波那契数列(fibonacci)
题目:斐波那契数列. 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.……. 在数学上,斐波那契数列 ...