ios-anchorPoint、position理解
2016-08-05 17:29
232 查看
anchorPoint(锚点)是layer的一个属性,下面我们来看看其对view的影响,本文主要通过图片方式展现:
锚点用单位坐标来描述也就是图层的相对坐标。在苹果文档中说明左下是(0,0),右上是(1,1),mac系统是这样,实际上:ios开发中图层左上角是{0,
0},右下角是{1, 1},取值范围不限。单位坐标的意思是指以视图长宽为单位来计算,坐标系展示如下:
默认一个视图的锚点在(0.5,0.5)的位置,这也是我们使用transform属性时为什么会围绕视图中心点旋转的原因,下面我们将一个默认视图锚点改成(0,0):
红色为原始视图,橘色为修改(0,0)锚点的视图,线单位宽度都是100:
橘色视图的origin由(100,100)->(100+50,100+25),朝右下移动了1/2视图的位置,同理(1,1)朝左上移动1/2视图的问题
由打印信息得出position为anchorPoint在superLayer中的坐标点,计算方式如下:
当设置视图的frame属性,position点的位置(也就是position坐标)根据锚点(anchorPoint)的值来确定,而当设置图层的position属性的时候,bounds的位置(也就是frame的orgin坐标)会根据锚点(anchorPoint)来确定。
说起来比较复杂,实际上运行一下项目就知道了
这时候设置橘色视图逆时针旋转90°得到下图(由于此时锚点为左上角的点,所以围绕左上角旋转):
有时候有需求改变锚点但是要求frame不变,在改变锚点之后重新设置一下frame就可以了,如果还有不明白的直接下载测试工程
锚点用单位坐标来描述也就是图层的相对坐标。在苹果文档中说明左下是(0,0),右上是(1,1),mac系统是这样,实际上:ios开发中图层左上角是{0,
0},右下角是{1, 1},取值范围不限。单位坐标的意思是指以视图长宽为单位来计算,坐标系展示如下:
默认一个视图的锚点在(0.5,0.5)的位置,这也是我们使用transform属性时为什么会围绕视图中心点旋转的原因,下面我们将一个默认视图锚点改成(0,0):
UIView *allView1 = [[UIView alloc]initWithFrame:CGRectMake(100, 100, leftW, topH)]; allView1.backgroundColor = [UIColor orangeColor]; allView1.layer.anchorPoint = CGPointMake(0,0); [self.view addSubview:allView1];
红色为原始视图,橘色为修改(0,0)锚点的视图,线单位宽度都是100:
橘色视图的origin由(100,100)->(100+50,100+25),朝右下移动了1/2视图的位置,同理(1,1)朝左上移动1/2视图的问题
//锚点改成(0,0)后新位置计算方法 CGPoint newOrigin; CGRect oldFrame = allView.frame; newOrigin.x = oldFrame.origin.x + oldFrame.size.width/2; newOrigin.y = oldFrame.origin.y + oldFrame.size.height/2; CGRect newFrame = allView1.frame; newFrame.origin = newOrigin; allView1.frame = newFrame;
由打印信息得出position为anchorPoint在superLayer中的坐标点,计算方式如下:
position.x = frame.origin.x + anchorPoint.x * bounds.size.width; position.y = frame.origin.y + anchorPoint.y * bounds.size.height;
当设置视图的frame属性,position点的位置(也就是position坐标)根据锚点(anchorPoint)的值来确定,而当设置图层的position属性的时候,bounds的位置(也就是frame的orgin坐标)会根据锚点(anchorPoint)来确定。
说起来比较复杂,实际上运行一下项目就知道了
这时候设置橘色视图逆时针旋转90°得到下图(由于此时锚点为左上角的点,所以围绕左上角旋转):
有时候有需求改变锚点但是要求frame不变,在改变锚点之后重新设置一下frame就可以了,如果还有不明白的直接下载测试工程
相关文章推荐
- 48.iOS动画和理解position与anchorPoint
- iOS开发UI篇—CAlayer层的属性(position、anchorPoint) 和隐式动画
- 彻底理解position与anchorPoint
- 彻底理解position与anchorPoint
- ios-day18-03(CALayer的两个属性position和anchorPoint(锚点))
- 理解CALayer中position与anchorPoint属性
- 彻底理解position与anchorPoint
- iOS-CALayer中position与anchorPoint详解
- iOS anchorPoint、position、bounds的关系
- 彻底理解position与anchorPoint
- iOS- CALayer之position、anchorPoint
- position与frame bounds anchorPoint的深入理解
- iOS开发19-iOS CALayer的position和anchorPoint
- 彻底理解position与anchorPoint
- 彻底理解position与anchorPoint
- position与anchorPoint理解(一)
- Cocos2d中的anchorPoint与position 的理解
- 彻底理解position与anchorPoint
- iOS CABasicAnimation 动画受layer.anchorPoint和layer.position 的影响
- 彻底理解position与anchorpoint