对于anchorPoint的一点理解
来源:互联网 发布:ubuntu root密码修改 编辑:程序博客网 时间:2024/06/05 18:06
每当修改一个CALayer的anchorPoint属性时,都要重新设置CALayer的position坐标
1.CALayer *layer = [myView layer];
1. CALayer *layer = [myView layer];
2. CGPoint oldAnchorPoint = layer.anchorPoint;
3. [layer setAnchorPoint:CGPointMake(1.0, 1.0)];
4. [layer setPosition:CGPointMake(layer.position.x + layer.bounds.size.width * (layer.anchorPoint.x - oldAnchorPoint.x), layer.position.y + layer.bounds.size.height * (layer.anchorPoint.y - oldAnchorPoint.y))];
为什么呢?
首先要清楚,UIView的frame属性是由center和bounds属性计算得到的。
frame.origin.x = center.x - bounds.size.width/2.0;
frame.origin.y = center.y - bounds.size.height/2.0;
frame.size = bounds.size;
相对的,身为UIView下级结构的CALayer呢?
CALayer的position(相当于center),bounds,anchorPoint是什么关系呢?
虽然没有frame,但是CALayer的显示(虚拟frame)也是由这些组件算出来的
frame.origin.x = position.x - anchorPoint.x * bounds.size.width/2.0;
frame.origin.y = position.y - anchorPoint.x * bounds.size.height/2.0;
frame.size = bounds.size;
所以,当我们在上面修改anchorPoint的时候,实际上修改了显示的运算元素!这样当anchorPoint修改为(1.0,1.0)的时候,经过重新运算,CALayer向左上角移动了
!
- 对于anchorPoint的一点理解
- 对于handler的一点理解
- 对于Session的一点理解
- Android: 对于Handler的一点理解。
- 对于POJ 1011的一点理解
- 我对于KMP算法的一点理解
- 对于cc2530GPIO中断的一点理解。
- 对于alphago文章的一点理解
- 对于数据库范式的一点理解
- 对于application一点理解
- 理解Cocos2d里的anchorPoint
- 对于*(mmu_tbl_base)+virtuladdr>>20等的一点理解
- 对于C++保护继承方式的一点理解
- 对于as3 falsh 和 android java的一点理解
- 对于bash:useradd:command not found错误的一点理解
- 对于typedef int array[5]的一点理解
- 对于LINUX内核tty设备的一点理解
- 对于Linux内核tty设备的一点理解
- java泛型学习3之类型参数的限制
- Flash图表组件FusionCharts帮助文档一:调用静态方法RenderChart
- php做推送服务端实现ios消息推送
- 终端合并.a文件
- html5跨平台---phoneGap介绍
- 对于anchorPoint的一点理解
- 数据库上机实验(一)
- 《Fundamentals of Project Management 4th Edition》 读书笔记 第七章 为项目工作安排进度
- .net减少数据的传输
- 深入剖析java类的构造方式
- uCOS_体系结构
- android游戏开发自学笔记4 Activity相关
- 几款思维导图软件的调研与选择
- android:descendantFocusability用法简析