iOS开发——使用OC篇&frame,bounds,center,position,anchorPoint总结

时间:2022-03-24 10:23:56

frame,bounds,center,position,anchorPoint总结

图层的 position 属性是一个 CGPoint 的值,它指定图层相当于它父图层的位置, 该值基于父图层的坐标系。

图层的 bounds 属性是一个 CGRect 的值,指定图层的大小(bounds.size)和图层的 原点(bounds.origin)。当你重写图层的重画方法的时候,bounds 的原点可以作为图形 上下文的原点。

图层拥有一个隐式的 frame,它是 position,bounds,anchorPoint 和 transform 属性 的一部分。设置新的 frame 将会相应的改变图层的 position 和 bounds 属性,但是 frame 本身并没有被保存。但是设置新的 frame 时候,bounds 的原点不受干扰,bounds 的大 小变为 frame 的大小,即bounds.size=frame.size。

图层的位置被设置为相对于锚点 (anchor point)的适合位置。当你设置 frame 的值的时候,它的计算方式和 position、 bounds、和 anchorPoint 的属性相关。

当你设置图层的 frame 属性的时候,position 会根据锚点(anchorPoint)相应的改 变,而当你设置图层的 position 属性的时候,bounds 会根据锚点(anchorPoint)做相应 的改变。

frame,center和bounds属性

1.frame、center和bounds属性
  • frame:控制位置和大小
  • center:控制位置(中心点)
  • bounds:控制大小(以自己的左上角为原点)
2.注意点

(1)通过以下属性可以修改控件的位置

  • frame.origin
  • center

(2)通过以下属性可以修改控件的尺寸

  • frame.size
  • bounds.size

position,anchorPoint

  • position:是我们需要设置对用控件的一个位置

      比如:btn.position = CGPointMake(0, 0);我们对应控件的位置就是(0,0)

      但是你想想控件中有无数个点,你怎么知道那个点作为我们要设置的那个点呢,当然我们按常理来都是中心点,但是这并不唯一,所以就有了anchorPoint

  • anchorPoint:觉得控件上面的那个点是我要设置的对应的点

有时候我们会结合上面几个属性使用,但是根据需求anchorPoint一般是用来实现不是绕中心点旋转功能,二如果我们不修改anchorPoint的话,position默认就是中点(父控件)