IOS视图View 的frame与bounds的区别

    在学习IOS一段时间后,忽然对view 的frame和bounds这两个属性搞迷糊了,不知二者的区别了,只记得之前有学过,今天从新再复习一下,看来好记性不如烂笔头,作个笔记,帮助本身记忆和快速复习。html

基本区别:

bounds是指这个view在它本身坐标系的坐标和大小,而frame指的是这个view在它superview的坐标系的坐标和大小
区别主要在坐标系这一块。

很明显一个是本身为原点的坐标系,一个是以屏幕为原点的坐标系。绝对坐标。。。相对坐标。。。好比屏幕旋转的时候就要以相对来重绘。 
frame 若是一个按钮,是在表格里,按钮的frame 的坐标也是相对的,并非相对屏幕,也就是说是相对坐标,不是绝对坐标

我也想知道任何一个uiview如何求得它在屏幕上的坐标(参照文章)。iview

1、首先列一下公认的资料:函数

先看到下面的代码你确定就明白了一些:
学习

-(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的原点倒是任意的(相对于父视图中的坐标位置)。
ui


再来看张图就明白了,spa

        frame: 该view在父view坐标系统中的位置和大小。(参照点是,父坐标系统)
        bounds:该view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,就至关于ViewB本身的坐标系统,以0,0点为起点)
        center:该view的中心点在父view坐标系统中的位置和大小。(参照点是,父坐标系统)
.net

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


因此,我我的认为,bounds影响到子view的位置和大小。code

2、demo演示:
orm

    UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 280, 250)];
    [view1 setBounds:CGRectMake(-20, -20, 280, 250)];
    view1.backgroundColor = [UIColor redColor];
    
    // 添加到self.view
    [self.view addSubview:view1];
    NSLog(@"view1 frame:%@====view1 bounds:%@",NSStringFromCGRect(view1.frame),NSStringFromCGRect(view1.bounds));
    
    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    view2.backgroundColor = [UIColor yellowColor];
    
    //添加到view1上,[此时view1坐标系左上角起点为(-20,-20)]
    [view1 addSubview:view2];
    NSLog(@"view2 frame:%@===view2 bounds:%@",NSStringFromCGRect(view2.frame),NSStringFromCGRect(view2.bounds));


(log输出日志代表,每一个新的view默认的bounds其实都是(0,0))


延伸阅读: frame在项目中的相关应用示例:UIImage和代码建立UIButton

相关文章
相关标签/搜索