iOS中锚点的那点事

相信在初次接触‘锚点’(anchorPoint)这个名词的时候,我们都会有点懵逼吧!记得我第一次接触这个名词,老师是这样解释的:锚点就像船舶的锚,它是用来固定船的位置的,在ios中,锚点的作用也有异曲同工之处,确定子视图位于父视图的准确位置,那现在我们就看看到底什么是锚点,我们又会经常使用锚点来做些什么?

我们知道,ios中,与尺寸和位置相关的几个重要属性有:bounds(确定自身的大小,但不能确定自身在父视图中的位置) 、frame(相对于父视图来说的,可以确定子视图的大小和位置),position(确定子视图在父视图中的位置,是视图layer层面的一个属性),而anchorPoint也是layer层面的一个属性,那我们今天先就两个layer层面的属性联合起来介绍锚点的作用是什么,先画个图看看什么是锚点


iOS中锚点的那点事_第1张图片

这个就是锚点,一个视图上共有9个锚点,及 x方向有0,0.5,1,y方向也有0,0.5,1,三个值,两两匹配就有求中情况了;然后锚点有什么作用了,那当然是定位了,那锚点怎么来定位?

那我们首先使用position来辅助解释:如果设置一个子视图(假设就叫childView)在父视图(假设叫做parentView)中,当设置childView.layer.position = CGPointMake(0,0),效果如下


iOS中锚点的那点事_第2张图片

子视图的中心点在父视图的(0,0)位置,现在我们在此基础上设置childView的anchorPoint:

childView.layer.anchorPoint = CGRectMake(0,0.5)  对照锚点找到(0,0.5)这个点对应哪一个。然后效果如下:

iOS中锚点的那点事_第3张图片

看到了子视图锚点(0,0.5)与父视图的(0,0)点重合,  如果设置childView.layer.anchorPoint = CGPointMake(1,1),猜想一下,是不是子视图的右下角的点与父视图的(0,0)点重合了,那我们看一下效果:


iOS中锚点的那点事_第4张图片

正如我们猜想的,由此总结可以知道,position确定子视图在父视图中的位置,默认是子视图的中心点与指定的position点重合的,但如果你指定子视图的锚点,那么这个锚点会与指定的position点重合,从而精确的定位了子视图在父视图的中的位置。

你可能感兴趣的:(iOS中锚点的那点事)