Core Animation
position和anchorPoint的区别 -整理自苹果官方文档-
Layers使用两种坐标系:
1. point-based :1)当需要定义layer在屏幕中或是距另一个layer的位置时用到,比如position,position默认在屏幕正中
2)定义一个layer的具体位置,在此坐标系中用size和position可以确定下来
3)position是定义layer相对父坐标系的位置的
4)虽然layer有frame属性,但它会随着position和size的改变而改变,且用得稍微少一些
2. unit coordinate :这种坐标系不是用来定义layer在屏幕中的位置的,比如anchorPoint。默认为(0.5, 0.5), 这个属性也是和以往大家适应的位置属性不同的一点,建立了和bounds的关系,具体看下面的内容就懂了

可以看到,position是在中间的,position也是少数的会随着anchorPoint的改变而变化的属性。

在unit coordinate的世界里,要定义具体的数值时,用的都是比例,所以值为0-1.
什么是anchorPoint?anchorPoint跟transform和position密切相关。
从下图可以看出,anchorPoint变化了,position也会变化。

可以看出来,为什么说anchorPoint不是定义layer在屏幕中的位置的属性,上下两个图anchorPoint发生了变化,但是layer在屏幕中的位置是没有变的,但这是因为position的变化。
会发现position和anchorPoint的位置完全一样。
任何时候都需要满足这样的公式:position.x = frame.origin.x + anchorPoint.x * bounds.size.width
position.y = frame.origin.y + anchorPoint.y * bounds.size.height
只是一个是对于父视图而言,一个是对于layer本身而言,更直截了当一点说,position就是对anchorPoint在父视图中位置的数值化反应,而anchorPoint只是比例反应。
比如上图中第一张图,layer长120,宽80;anchorPoint(0, 0);position就是anchorPoint在父视图中的坐标,即(40, 60)。

看得出anchorPoint是transform的旋转围绕点
Core Animation的更多相关文章
- iOS 图形图像动画 Core Animation
//Core Animation #define WeakSelf __weak __typeof(self) weakSelf = self #define StrongSelf __strong ...
- iOS开发之Core Animation
在IOS中如果使用普通的动画则可以使用UIKit提供的动画方式来实现,如果想实现更复杂的效果,则需要使用Core Animation了. 在Core Animation中我们经常使用的是 CABasi ...
- 老司机带你走进Core Animation
为什么时隔这么久我又回来了呢? 回来圈粉. 开玩笑的,前段时间ipv6被拒啊,超级悲剧的,前后弄了好久,然后需求啊什么的又超多,所以写好的东西也没有时间整理.不过既然我现在回来了,那么这将是一个井喷的 ...
- IOS Core Animation Advanced Techniques的学习笔记(五)
第六章:Specialized Layers 类别 用途 CAEmitterLayer 用于实现基于Core Animation粒子发射系统.发射器层对象控制粒子的生成和起源 CAGradient ...
- IOS Core Animation Advanced Techniques的学习笔记(四)
第五章:Transforms Affine Transforms CGAffineTransform是二维的 Creating a CGAffineTransform 主要有三种变 ...
- IOS Core Animation Advanced Techniques的学习笔记(一)
转载. Book Description Publication Date: August 12, 2013 Core Animation is the technology underlying A ...
- 关于Core Animation(转载部分内容)
读者在浏览技术博客的时候,看到一篇关于Core Animation的介绍,觉得挺有用的,想分享给大家.原作者不知道是谁,嘿,所以就先不标注了,如有冒犯敬请原谅.不过笔者从中摘录部分内容分享一下. 其中 ...
- iOS Core Animation之CALayer心得
使用CALayer的mask实现注水动画效果 Core Animation一直是iOS比较有意思的一个主题,使用Core Animation可以实现非常平滑的炫酷动画.Core animtion的AP ...
- iOS——Core Animation 知识摘抄(四)
原文地址http://www.cocoachina.com/ios/20150106/10840.html 延迟解压 一旦图片文件被加载就必须要进行解码,解码过程是一个相当复杂的任务,需要消耗非常长的 ...
- iOS——Core Animation 知识摘抄(三)
原文地址:http://www.cocoachina.com/ios/20150105/10827.html CAShapeLayer CAShapeLayer是一个通过矢量图形而不是bitmap来绘 ...
随机推荐
- java基础之synchronized使用方法
首先.參考文章:http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html PS:參考文章非常长,但内容非常丰富,若是刚開始学习 ...
- 初涉A*剪枝
挖坑防忘,天亮补题解. #include <algorithm> #include <iostream> #include <cstring> #include & ...
- eclipse下修改项目名导致tomcat内发布名不一致的解决方法 .
eclipse下修改项目名导致tomcat内发布名不一致的解决方法 . ------------------------------------------------------- 解决方案: 直接 ...
- 安卓蓝牙技术Bluetooth使用流程(Bluetooth详解)
一:蓝牙设备之间的通讯首要包含了四个进程 设置蓝牙设备 寻觅局域网内也许或许匹配的设备 衔接设备 设备之间的数据传输 二:详细编程完结 1. 发动蓝牙功用 首要经过调用静态办法getDefaultAd ...
- mysqlbinlog 用法
操作命令: show binlog events in 'binlog.000016' limit 10; reset master 删除所有的二进制日志 flush logs 产生一个新的binl ...
- 转:maven报错非法字符:\65279 错误
开发中一个项目很早就报这个错,maven报错非法字符:\65279 错误,今天终于忍无可忍要解决它 :编译java文件的时候,有些java文件报非法字符 \65279错误,在网上找和很多 方法,也试了 ...
- NSObject中的isa到底是个什么?
首先看一下NSObject的定义: @interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY; } 官方解释:Eve ...
- ASP.Net中GridView多层嵌套,用最里层的控件获取到外层GridView
protected void ddlCode_SelectedIndexChanged(object sender, EventArgs e) { DropDownList ddlCode = (Dr ...
- Unity3D 中3D刚体组件的力
一般一个物体除了手动添加刚体受到重力作用外,还可以给该刚体添加一个其他的力. 这里就要涉及到一个恒定力(Constant Force)组件 首先要去掉物体的重力(因为重力是刚体组件中默认的一个向下的力 ...
- lsjORM ----让开发变得更加快捷(二)
lsjORM结构 跟传统三层没有多大区别,这里添加DTO(参数列表)跟PetaPoce(数据库操作),普通的三层我们都喜欢用DBHelper或者SqlHelper来封装sql的辅助方法,PetaPoc ...