关闭

ios view的frame和bounds之区别(位置和大小)

95人阅读 评论(0) 收藏 举报
分类:


前言:

学习ios开发有一段时间了,项目也做了两个了,今天看视频,突然发现view的frame和bound两个属性,发现bound怎么也想不明白,好像饶你了死胡同里,经过一番尝试和思考,终于弄明白bound的含义。PS:我承认我是一个很笨很笨的人。

所以现在记录下来,供以后查阅,同时方便所有和我一样有疑惑的人查看。



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

先看到下面的代码你肯定就明白了一些:
-(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的位置和大小。



二、demo演示:

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


(运行展示,图中说的很明白了哦)


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

1
0
查看评论

iOS frame与bounds区别详解

转自 http://blog.csdn.net/chenyufeng1991/article/details/51764303 在iOS的UI开发中,frame和bounds是两个非常容易搞混的概念,而很多开发者在实际项目中也很少去区分,因此会导致出现一些意想不到的问题。本篇博客以实际代...
  • chy555chy
  • chy555chy
  • 2016-06-28 16:04
  • 1643

ios CALayer的Frame,bounds,position,anchorPoint

记录四者之间的关系* frame.origin.x = position.x - anchorPoint.x bounds.size.width; ** * frame.origin.y = position.y - anchorPoint.y bounds.size.height; **...
  • ifdefine
  • ifdefine
  • 2016-04-13 20:35
  • 478

iOS开发总结之 view的frame、center和和view的bounds之间的区别

iOS开发总结之 view的frame、center和和view的bounds之间的区别
  • sunnyboy9
  • sunnyboy9
  • 2016-04-28 21:23
  • 398

剖析OC中的bounds与frame的区别

在OC的UI控件中,我们常常会碰到两个属性frame 与bound,前者相对比较好理解,而bound有时候却比较绕,今天我们来仔细研究下bound的一些特性。首先,我们来看下下面的代码: 通过代码,我们可以看出bounds的width值、height值与frame是相等的,只不过origin点...
  • archi_Xiao
  • archi_Xiao
  • 2015-05-14 07:00
  • 781

iOS开发——frame和bounds详解

在iOS的UI开发中,frame和bounds是两个非常容易搞混的概念,而很多开发者在实际项目中也很少去区分,因此会导致出现一些意想不到的问题。本篇博客以实际代码的方式来学习frame和bounds的使用。相关示例代码上传至 https://github.com/chenyufeng199...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2016-06-26 23:00
  • 5122

综述iOS视图的frame、bounds、center、position、anchorPosition等与位置、大小有关的属性

在iOS开发开发过程中经常会用到界面元素的frame、bounds表示大小和位置的属性以及center、position、anchorPosition等单纯表示位置的属性。这些属性究竟什么含义?彼此间又什么关系呢?下面就来浅谈一番。 首先来说说frame和bounds。  ...
  • E20914053
  • E20914053
  • 2015-11-20 18:08
  • 1458

ios,关于bounds,frame,修改bounds…

遇到一个fram和bounds的区别,网上很多都是说了一些其他的,没有说修改bounds的同时,修改大小。自己去研究了一下,发现bounds的其中的问题,在此记录。     UIView *view1 = [[UIView alloc] initWithFrame:C...
  • zhdzxc123
  • zhdzxc123
  • 2016-05-26 13:12
  • 265

详解UIView的frame、bounds和center属性

1、概要 翻开ios官方开发文档,赫然发现上面对这三个属性的解释如下: frame:描述当前视图在其父视图中的位置和大小。 bounds:描述当前视图在其自身坐标系统中的位置和大小。 center:描述当前视图的中心点在其父视图中的位置。 是不是有点迷糊?好吧,别急,让我们...
  • muyu114
  • muyu114
  • 2012-04-06 10:15
  • 10230

Transform 与Frame、bounds的个人总结

Transform的使用 frame:  位置和尺寸 bounds 尺寸 center 位置 transform  位置/尺寸/旋转角度/ 利用transform 进行 按钮的操作。 self.view viewWithTag   一层一层找。 先找到谁 ...
  • cl123cpzaihu
  • cl123cpzaihu
  • 2015-01-13 16:11
  • 311

iOS View frame和bounds的区别

原文链接:http://blog.csdn.net/mad1989/article/details/8711697 前言: 学习ios开发有一段时间了,项目也做了两个了,今天看视频,突然发现view的frame和bound两个属性,发现bound怎么也想不明白,好像饶你了死胡同里,经...
  • Ronaldo_Carry
  • Ronaldo_Carry
  • 2015-10-13 11:05
  • 249
    个人资料
    • 访问:100次
    • 积分:3
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档