IOS bounds 与 frame的区别
今天写案例代码,发现资料上设置一个UIButton的frame时,是这样设置的
btnCover.frame = self.view.bounds;
但是我自己一开始是这样写的
btnCover.frame = self.view.frame;
后来,我发现,两个不同的写法都达到了我想要的想过,也就是UIButton的大小和父容器的大小一致,我就纳闷了,既然是同样的效果,为什么即有bounds又有frame。后来经查,发现如下区别:
-(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); }
,观察上面两段代码,发现,frame的远点是任意的,而bounds的原点却是 0 ,0.
frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
bounds:该view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,以0,0点为起点)