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来绘 ...
随机推荐
- php连接oracle数据库(linux)(转)
php连接访问Oracle是用过oci函数,以下是整理的文档 1.安装Apache和php包 yum install -y httpd php* 2.下载Oracle组件 oracle-instant ...
- 精灵类(CCSprite)
一.对精灵的理解 玩家控制的主角.AI控制的NPC,以及地图上的宝箱.石块,甚至游戏主菜单的背景图片都是精灵.因此,可以这样认为,玩家看到的一切几乎都是由精灵构成的. 精灵不一定是静态的.通常,一个精 ...
- javascript笔记08:javascript的if...else语句
案例代码如下: <!DOCTYPE html> <html> <body> <p>点击这个按钮,获得基于时间的问候.</p> <but ...
- uedoc 源码解析
思路分析 node 包使用 1. JSON5 2. art-template 3.
- android应用版本更新功能---完整版
源码下载地址:csdn下载地址:http://download.csdn.net/download/csdn576038874/9526085 博客园下载地址:http://files.cnblogs ...
- Spring MVC的异常统一处理方法
我们经常需要统一配置项目的异常处理,又希望统一处理异常代码,同时不侵入原有的正常代码.我们可以通过以下三种方式实现统一处理项目的自定义异常. 通过SimpleMappingExceptionResol ...
- Eval()和DataBinder Eval(Container DataItem,)的区别及用法
ASP.NET 2.0改善了模板中的数据绑定操作把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fiel ...
- 数据结构与算法JavaScript 读书笔记
由于自己在对数组操作这块比较薄弱,然后经高人指点,需要好好的攻读一下这本书籍,原本想这个书名就比较高深,这下不好玩了.不过看着看着突然觉得讲的东西都比较基础.不过很多东西,平时还是没有注意到,故写出读 ...
- Oracle中用一张表的字段更新另一张表的字段
今天在做项目的过程中,发现开发库中某张表的某字段有许多值是空的,而测试库中该字段的值则是有的. 那么,有什么办法能将测试库中该字段的值更新到开发库中呢? SQL Server中这是比较容易解决的,而O ...
- 经历:sybase的sql查询,当传递的参数中包含全角空格(\u00a0),查询慢
今天,我遇到了一个sybase数据库查询的问题.一句简单的sql,但是不知道为什么查询不出来,导致生产生产服务器频频挂掉.吓得我的小心脏砰砰啊. select DISTINCT A.FCIL_CDE ...