浅析frame与bounds

UIView 有两个属性,frame 与 bounds。我们所熟知的是 bounds 其实就是 x,y 均为0的 frame。但是你是否有过这样的疑问:

  • 既然 bounds 就是 x,y 均为0的 frame,那为什么还要有 bounds 这个属性的存在,直接使用 frame 不就好了么。
  • 既然 bounds 的 x,y,均为0,那为什么 bounds 还是 CGRect 类型,直接是 CGSize 类型不就好了么。

针对问题一,我们给出的答案是,frame 是描述当前 view 相对于父 view 的坐标系的位置关系,而 bounds 是描述当前 view 相对于自己的坐标系的位置关系。这两个属性所描述的东西不同所以都有存在的意义,而且这也很好的解释了为什么 bounds 的 x,y 值始终为0。

那么对于为题二,既然 bounds 是 CGRect 类型的,那么就表示其 x,y 属性都是有意义的。那么我们就来看一下 bounds 的 x,y 属性的意义究竟是什么

Read More