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点为起点)

posted @ 2015-12-02 21:43  _启明  阅读(320)  评论(0编辑  收藏  举报