iOS 中 frame 跟 bounds 的区别

代码

1
2
3
4
5
6
7
- (CGRect)frame {
return CGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height);
}

- (CGRect)bounds{
return CGRectMake(0,0,self.frame.size.width,self.frame.size.height);
}

很明显, bounds的原点是(0,0)点(view本身的坐标系统, 默认永远都是(0,0)点, 除非自己去setbounds), 而frame的原点却是任意的(相对于父视图中的坐标位置)

总结

  • frame: 该view在父view坐标系统中的位置和大小, 参照点为父视图的坐标
  • bounds: 该view在本地坐标系统中的位置和大小, 参照点为(0,0)
  • center: 该view的中心点在父view坐标系统中的位置和大小, 参照点为父视图的坐标