iOS中锚点的那点事

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

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


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

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


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

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

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 12,724评论 6 30
  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 11,514评论 0 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 10,544评论 5 13
  • 每个UIView有一个伙伴称为layer,一个CALayer。UIView实际上并没有把自己画到屏幕上;它绘制本身...
    shenzhenboy阅读 8,326评论 0 17
  • Core Animation其实是一个令人误解的命名。你可能认为它只是用来做动画的,但实际上它是从一个叫做Laye...
    小猫仔阅读 9,263评论 1 4

友情链接更多精彩内容