iOS开发19-iOS CALayer的position和anchorPoint
来源:互联网 发布:魔方拼字软件 编辑:程序博客网 时间:2024/05/17 05:57
iOS开发19-iOS CALayer的position和anchorPoint
首先看几个概念:
frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
bounds:该view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,就相当于View自己的坐标系统,以0,0点为起点)
center: 该view的中心点在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
position就是anchorPoint在superLayer中的位置
把一张白纸用图钉订在书桌上,白纸可以旋转,这个图钉就是锚点。
图形围着锚点进行旋转缩放等。
锚点的位置在白纸上的坐标:
左上角,anchorPoint(0,0);右上角,anchorPoint(1,0);
中心点,anchorPoint(0.5,0.5);
左下角,anchorPoint(0,1);右下角,anchorPoint(1,1);
如图所示:
position和anchorPoint的关系
position.x = frame.origin.x + anchorPoint.x * bounds.size.width;
position.y = frame.origin.y + anchorPoint.y * bounds.size.height;
frame.origin.x = position.x - anchorPoint.x * bounds.size.width;
frame.origin.y = position.y - anchorPoint.y * bounds.size.height;
修改layer的position位置或者修改anchorPoint受影响的只会是frame.origin,也就是layer坐标原点相对superLayer会有所改变。
换句话说,frame.origin由position和anchorPoint共同决定
更改锚点,但是不更改Frame
如果需要修改anchorPoint,但又不想要移动layer也就是不想修改frame.origin,此时就要:
第一种方法:
position新位置 = position旧位置 + (anchorPoint新位置 - anchorPoint旧位置) * bounds.size.width
第二种方法:
有个更方便的方法。修改anchorPoint后再重新设置一遍frame就可以,position就会自动进行相应的改变。
CGRect oldFrame = 旧的frame;//存储旧的frame
view.layer.anchorPoint = 新的anchorpoint;//更新anchorpoint
view.frame = oldFrame;//将frame改成旧的frame,此时position会根据frame和锚点来进行更新
1、position是layer中的anchorPoint在superLayer中的位置坐标。
2、互不影响原则:单独修改position与anchorPoint中任何一个属性都不影响另一个属性。
3、frame、position与anchorPoint有以下关系:
frame.origin.x = position.x - anchorPoint.x * bounds.size.width;
frame.origin.y = position.y - anchorPoint.y * bounds.size.height;
著作权声明:本文由http://my.csdn.net/Nathan1987_原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
- iOS开发19-iOS CALayer的position和anchorPoint
- IOS CALayer中的position 和 anchorPoint
- iOS CALayer中position和anchorPoint的联系和区别
- ios CALayer的Frame,bounds,position,anchorPoint
- iOS开发UI篇—CAlayer层的属性(position、anchorPoint) 和隐式动画
- iOS开发UI篇—CAlayer层的属性,关于position和anchorPoint介绍
- iOS- CALayer之position、anchorPoint
- IOS CALayer(一)彻底理解CALayer的position与anchorPoint
- CALayer的position和anchorPoint
- CALayer的position和anchorPoint
- CALayer的anchorPoint和position
- iOS CALayer 理解position与anchorPoint
- ios-day18-03(CALayer的两个属性position和anchorPoint(锚点))
- iOS-CALayer的anchorPoint锚点细解
- CALayer中anchorPoint和position的用法
- CALayer中anchorPoint和position的用法
- CALayer中anchorPoint和position的用法
- CAlayer层的属性position和anchorPoint
- MP4文件格式详解——文件类型ftyp(转)
- exports 和 module.exports 的区别
- Java的基本数据类型
- 使用 echo 函数来输出字符串
- mac常用快捷方式
- iOS开发19-iOS CALayer的position和anchorPoint
- searchResultsTableView的contentSize有问题
- Go编译问题集锦
- 通知开启状态判断
- java.lang.UnsupportedClassVersionError 解决办法
- Java 编程下的同步代码块
- Http请求分析
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- iOS-- 键盘next 和 点击 Btn