CAlayer层的属性

iOS开发UI篇—CAlayer层的属性

一、position和anchorPoint

1.简单介绍

CALayer有2个非常重要的属性:position和anchorPoint

@property CGPoint position;

用来设置CALayer在父层中的位置

以父层的左上角为原点(0, 0)

 

@property CGPoint anchorPoint;

称为“定位点”、“锚点”

决定着CALayer身上的哪个点会在position属性所指的位置

以自己的左上角为原点(0, 0)

它的x、y取值范围都是0~1,默认值为(0.5, 0.5)

2.图示

anchorPoint

它的取值为0~1

 

红色图层的anchorPoint为(0,0)

红色图层的anchorPoint为(0.5,0.5)

红色图层的anchorPoint为(1,1)

红色图层的anchorPoint为(0.5,0)

position和anchorPoint

添加一个红色图层到绿色图层上,红色图层显示到什么位置,由position属性决定

假设红色图层的position是(100,100)

  到底把红色图层的哪个点移动到(100,100)的坐标位置,锚点。

  红色图层的锚点是(0,0)

红色图层的锚点是(0.5,0.5)

红色图层的锚点是(1,1)

红色图层的锚点是(0.5,0)

3.代码示例

(1)没有设置锚点。默认的锚点位置为(0.5,0.5)

复制代码
 1 //
 2 //  YYViewController.m
 3 // 03-锚点等属性  4 //  5 // Created by apple on 14-6-21.  6 // Copyright (c) 2014年 itcase. All rights reserved.  7 //  8  9 #import "YYViewController.h" 10 11 @interface YYViewController () 12 13 @end 14 15 @implementation YYViewController 16 17 - (void)viewDidLoad 18 { 19  [super viewDidLoad]; 20 //创建图层 21 CALayer *layer=[CALayer layer]; 22 //设置图层的属性 23 layer.backgroundColor=[UIColor redColor].CGColor; 24 layer.bounds=CGRectMake(0, 0, 100, 100); 25 //添加图层 26  [self.view.layer addSublayer:layer]; 27 28 } 29 30 @end
复制代码

显示效果:

         

(1)设置锚点位置为(0,0)

复制代码
 1 - (void)viewDidLoad
 2 {
 3  [super viewDidLoad];  4 //创建图层  5 CALayer *layer=[CALayer layer];  6 //设置图层的属性  7 layer.backgroundColor=[UIColor redColor].CGColor;  8 layer.bounds=CGRectMake(0, 0, 100, 100);  9 //设置锚点为(0,0) 10 layer.anchorPoint=CGPointZero; 11 //添加图层 12  [self.view.layer addSublayer:layer]; 13 } 14 @end
复制代码

显示效果:

二、隐式动画

1.简单说明

每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)

所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画

什么是隐式动画?

当对非Root Layer的部分属性进行修改时,默认会自动产生一些动画效果

而这些属性称为Animatable Properties(可动画属性)

 

列举几个常见的Animatable Properties:

bounds:用于设置CALayer的宽度和高度。修改这个属性会产生缩放动画

backgroundColor:用于设置CALayer的背景色。修改这个属性会产生背景色的渐变动画

position:用于设置CALayer的位置。修改这个属性会产生平移动画

2.代码示例

复制代码
 1 //
 2 //  YYViewController.m
 3 // 04-隐式动画  4 //  5 // Created by apple on 14-6-21.  6 // Copyright (c) 2014年 itcase. All rights reserved.  7 //  8  9 #import "YYViewController.h" 10 11 @interface YYViewController () 12 @property(nonatomic,strong)CALayer *layer; 13 @end 14 15 @implementation YYViewController 16 17 - (void)viewDidLoad 18 { 19  [super viewDidLoad]; 20 //创建图层 21 CALayer *mylayer=[CALayer layer]; 22 //设置图层属性 23 mylayer.backgroundColor=[UIColor brownColor].CGColor; 24 mylayer.bounds=CGRectMake(0, 0, 150, 100); 25 //显示位置 26 mylayer.position=CGPointMake(100, 100); 27 mylayer.anchorPoint=CGPointZero; 28 mylayer.cornerRadius=20; 29 //添加图层 30  [self.view.layer addSublayer:mylayer]; 31 self.layer=mylayer; 32 } 33 34 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 35 { 36 //隐式动画 37 self.layer.bounds=CGRectMake(0, 0, 200, 60); 38 self.layer.backgroundColor=[UIColor yellowColor].CGColor; 39 } 40 @end
复制代码

效果:

        

关闭隐式动画:

1     [CATransaction begin];
2     [CATransaction setDisableActions:YES];
3     //隐式动画 4 self.layer.bounds=CGRectMake(0, 0, 200, 60); 5 self.layer.backgroundColor=[UIColor yellowColor].CGColor; 6 [CATransaction commit];

3.如何查看CALayer的某个属性是否支持隐式动画?

  可以查看头文件,看有没有Animatable,如果有则表示支持。

也可以查看官方文档

文档中标明的这些属性都是支持隐式动画的

 

转载自:http://www.cnblogs.com/wendingding/p/3800736.html

 

转载于:https://www.cnblogs.com/wsnb/p/4878469.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Odoo9发行说明

2015年10月1日,期待已久的Odoo9正式发布。本文是Odoo9正式版发行说明,基于官网资料翻译。 译者: 苏州-微尘原文地址:https://www.odoo.com/page/odoo-9-release-notes译文地址:http://blog.csdn.net/wangnan537/article/details/4…

揭秘史上最完美一步到位的搭建Andoriod开发环境

Windows环境下Android开发环境搭建虽然不难而且网上资料众多,但是众多资料如出一折 忽略了很多细节,最终还是没能达到满意效果。 基本步骤如下:JDK安装、环境变量配置、Eclipse下载、AndoriodSDK下载安装、下载配置ADT但是到这里还不算完美搞…

【SQL】服务器环境下的SQL

一、大型数据库的三层体系结构 web服务器:比如在淘宝页面上,输入“牛肉干”,就是web服务器来处理,提交给应用服务器。 应用服务器:在获取到“牛肉干”这个请求后,应用服务器决定如何汇集结果,并…

即时聊天IM之二 openfire 整合现有系统用户

合肥程序员群:49313181。 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojitqq.com 综述: 每天利用中午时间更新下这个知识点的的博客如果感兴趣的觉得更新慢了也别介意(其它时间还是…

C#在ASP.NET4.5框架下的首次网页应用

运行效果预览: 先看实践应用要求: 1.编写一个函数,用于计算1!2!3!4!5!,在控制台或页面输出运行结果。 2.在控制台或页面输出九九乘法表。 3.输入10个以内的整…

Android-Universal-Image-Loader三大组件DisplayImageOptions、ImageLoader、ImageLoaderConfiguration详解...

转 一、介绍 Android-Universal-Image-Loader是 一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。所以,如果你的程序里需要这个功能的话,那么不妨试试它。 因为已经封装好了一些类和方法…

Java小知识

内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。(1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。(2)、内部类不能用普通的方式访问。成员变量成员变量静态成员变量。List遍…

初识EL

一、EL函数库介绍 由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用。  这些EL函数在JSTL开发包中进行描述,因此在JSP页面中使用SUN公司的EL函数库,需要导入…

Scala学习笔记-环境搭建以及简单语法

关于环境的搭建,去官网下载JDK8和Scala的IDE就可以了,Scala的IDE是基于Eclipse的。 下面直接上代码: 这是项目目录: A是scala写的: package first import scala.collection.mutable.ListBufferobject A {def main(args…

UVa 12169 (枚举+扩展欧几里得) Disgruntled Judge

题意&#xff1a; 给出四个数T, a, b, x1,按公式生成序列 xi (a*xi-1 b) % 10001 (2 ≤ i ≤ 2T) 给出T和奇数项xi&#xff0c;输出偶数项xi 分析&#xff1a; 最简单的办法就是直接枚举a、b&#xff0c;看看与输入是否相符。 1 #include <cstdio>2 3 const int maxn …

【WCF安全】WCF 自定义授权[用户名+密码+x509证书]

1.x509证书制作(略) 2.直接贴代码 ----------------------------------------------------------------------服务端------------------------------------------------------------------------------------------- WCF服务 1 using System;2 using System.Collections.Generi…

ASP.NET Web API 数据提供系统相关类型及其关系

转载于:https://www.cnblogs.com/frankyou/p/4932651.html

openMVG跑自定义数据出错

使用自己拍摄的图片跑 openMVG 的 turtor_demo.py 时&#xff0c;出现错误&#xff0c;没有生成 sfm_data.bin DSC01988" model "DSC-RX100M6" doesnt exist in the database Please consider add your camera model and sensor width in the database.原因时数…

windows server 2003下安装iis6+php

参照http://www.myhack58.com/Article/sort099/sort0100/2012/35579.htm 这篇文章&#xff0c;即可&#xff01; 前 面我写了《windows安装PHP5.4Apache2.4Mysql5.5》的安装教程&#xff0c;本地实现是很简单的&#xff0c;但是有人还是喜欢用IIS来配置 PHP环境&#xff0c;部分…

winform自定义文件程序-- 不允许所请求的注册表访问权(ZSSQL)

常见问题1&#xff1a; 不允许所请求的注册表访问权 win7、win8 双击程序文件ZSSQL时候会出现 不允许所请求的注册表访问权 的弹窗异常 解决方法&#xff1a;ZSSQL.exe 右键 属性--兼容性--以管理员身份运行此程序 转载于:https://www.cnblogs.com/DemoLee/p/4173324.html

UITabBarController使用总结

刚看了几天教程就开始跟着开发了&#xff0c;以前也没学过C&#xff0c;太痛苦了~只能看看大神的博客&#xff0c;自己再总结学习一下了。 1.首先新建一个TabBarViewController继承于UITabBarController。然后什么都不用写&#xff0c;相当于装各个tab页的容器。 2.给每个视图都…

第一个 mac 程序 Create-JSON-Model

第一个 mac 程序 Create-JSON-Model 效果图 数据 {"ID":null,"name":"Doe","first-name":"John","age":25,"hobbies":["reading","cinema",{"sports":["volley-bal…

Android--简单开发和使用ContentProvider数据共享

今天学习的时候学到了ContentProvider数据共享这个东东&#xff0c;所以自己写了个小例子: 我们要开发ContentProvider的话&#xff0c;需要创建一个类去继承ContentProvider,里面会让你重写四个方法&#xff0c;这四个方法就是数据共享用到的方法 包括SQLite的插入、查询、删除…

ECharts数据图表系统? 5分钟上手!

目录&#xff1a; 前言简介方法一&#xff1a;模块化单文件引入(推荐)方法二&#xff1a;标签式单文件引入【前言】 最近在捣鼓各种插件各种框架&#xff0c;发现这个ECharts还是比较不错的&#xff0c;文档也挺全的&#xff0c;还是中文的&#xff0c;给大家推荐一下。 这篇文…