关于 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);
}
很明显,bounds的原点是(0,0)点(就是view本身的坐标系统,默认永远都是0,0点,除非认为setbounds),而frame的原点却是任意的(相对于父视图中的坐标位置)。

再来看张图就明白了,

frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
        bounds:该view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,以0,0点为起点)
        center:该view的中心点在父view坐标系统中的位置和大小。(参照电是,父亲的坐标系统)

我个人认为,bounds稍微有点费解,稍不留神,想的多了,就会绕进去。每个view都有一个本地坐标系统。这个坐标系统作用比较重要,比如触 摸的回调函数中的UITouch里面的>坐标值都是参照这个本地坐标系统的坐标。当然bounds这个属性也是参照这个本地坐标系统来的。其实本地 坐标系统的关键就是要知道的它的原点(0,0)在什么位置(这个位置又是相对于上层的view的本地坐标系统而言的,当然最上面的一层view就是 window它的本地坐标系统原点就是屏幕的左上角了)。通过修改view的bounds属性可以修改本地坐标系统的原点位置。

所以,我个人认为,bounds影响到子view的位置和大小。

时间: 2024-10-13 22:25:00

关于 bounds 和 frame的相关文章

Objective-C日记-Bounds和Frame

今天在学习有关UIView时,关于Bounds和Frame的问题困扰多时,今日研究了一翻,有所收获,遂记之. 一.问题来源 网上有关bounds和frames的比较的文章主要就是一篇:http://blog.csdn.net/mad1989/article/details/8711697,核心思想是bounds的坐标系是相对于自己而言,而frames的坐标系是相对于父视图,主要的演示代码如下: UIView *view1 = [[UIView alloc] initWithFrame:CGRec

一张图让你明白IOS中bounds和frame的区别

很多人在学习的就搞混了bounds和frame的区别,大家可以看看这张图就会明白它俩的区别: frame: 该view在父view坐标系统中的位置和大小.(参照点是,父亲的坐标系统) bounds:该view在本地坐标系统中的位置和大小.(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,以0,0点为起点) center:该view的中心点在父view坐标系统中的位置和大小.(参照点是,父亲的坐标系统) 看上图中,如果将ViewA的bounds设置为(-200,-100,550,400)

UIView 中bounds和frame的差别

搞iOS开发的童鞋基本都会用过UIView,那他的bounds和frame两个属性也不会陌生,那这两个有什么实质性的区别呢? 先看到下面的代码你肯定就明白了一些: -(CGRect)frame{     returnCGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height); } -(CGRect)bounds{     returnCGRectMake(0,0,

IOS bounds 与 frame的区别

今天写案例代码,发现资料上设置一个UIButton的frame时,是这样设置的 btnCover.frame = self.view.bounds; 但是我自己一开始是这样写的 btnCover.frame = self.view.frame; 后来,我发现,两个不同的写法都达到了我想要的想过,也就是UIButton的大小和父容器的大小一致,我就纳闷了,既然是同样的效果,为什么即有bounds又有frame.后来经查,发现如下区别: -(CGRect)frame{ return CGRectMa

iOS frame和Bounds 以及frame和bounds区别

frame frame是每个view必备的属性,代表的是当前视图的位置和大小,没有设置他,当前视图是看不到的.位置需要有参照物才能确定,数学中我们用坐标系来确定坐标系中的某个点的位置,iOS中有他特有的坐标系,如下图: iOS坐标系 在iOS坐标系中以左上角为坐标原点,往右为X正方向,往下是Y正方向 frame中的位置是以父视图的坐标系为标准来确定当前视图的位置 同样的默认情况下,本视图的左上角就是子视图的坐标原点 更改frame中位置,则当前视图的位置会发生改变 更改frame的大小,则当前视

UI部分bounds和frame

- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view.    //设置viewController的背景色,准确的说,我们是设置viewController的View的背景色    self.view.backgroundColor=[UIColor magentaColor];        //新建一个UIView        UIView *bl

bounds和frame的区别?

frame和bounds都市用来描述一块区域的 frame是以父控件的左上角为原点,可视范围相对于父控件 bounds:描述是可视范围在内容哪个区域,相对于内容. 可视化区域在内容中显示区域,bounds的x,y可以改(改的是内容原点的位置) 任何控件都有自己的内容,而且这个内容无限大 子控件都市相对于内容 UIView *redView = [[UIView alloc] init]; redView.frame = CGRectMake(50, 50, 200, 200); redView.

iOS界面篇 - bounds和frame的相同和区别

相同点: 他们都是CGRect类型,且拥有属性origin(x, y),  size(weight, height) 不同点: bounds是你画的视图的边界,和父视图没有半毛钱关系 frames则一定是相对于父视图而言的 在通常情况下他们是相似的,但是特殊情况,比如旋转的时候,他们就不一样了 广说太抽象了 还是用实际图形来表达一下吧 旋转以后 这下明白了吧 (再看不懂不要说你太...)

bounds 和frame区别

仔细看下这个图就知道了