开发中调整View的时候的经常会遇到frame和bounds,刚开始看的时候不是很清楚,不过看了一下官方文档,frame是确定视图在父视图中的位置,和本身的大小,bounds确定可以确定子视图在当前视图中的位置,还可以改变View的大小,如果bounds确定大小,那么View的视图优先选择的bounds中的宽高。Center的位置是相对于父坐标系中的定位。苹果官方给了一张图片供参考:

如果还不是很清晰,可以参考一下frame和bounds的中代码:

-(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);
}

当然为了更好的理解以上的概念,写个小Demo实战了一下,viewDidLoad将图片添加在View中,然后在图片上添加一个View:

UIImageView  *girlImageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Girl.jpg"]];girlImageView.frame=CGRectMake(40, 40, 240, 300);[self.view addSubview:girlImageView];//添加到父视图中NSLog(@"girlImageView frame:%@------girlImageView bounds:%@",NSStringFromCGRect(girlImageView.frame),NSStringFromCGRect(girlImageView.bounds));UIView *childView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];childView.backgroundColor = [UIColor yellowColor];[girlImageView addSubview:childView];NSLog(@"childView frame:%@-------childView bounds:%@",NSStringFromCGRect(childView.frame),NSStringFromCGRect(childView.bounds));

 具体效果如下:

输出结果:

2015-04-03 11:50:00.326 MyContraint[1929:98282] girlImageView frame:{{40, 40}, {240, 300}}------girlImageView bounds:{{0, 0}, {240, 300}}
2015-04-03 11:50:00.327 MyContraint[1929:98282] childView frame:{{0, 0}, {100, 100}}-------childView bounds:{{0, 0}, {100, 100}}

 这个时候如果改变一下UIImageView的bounds,代码如下:

   UIImageView  *girlImageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Girl.jpg"]];girlImageView.frame=CGRectMake(40, 40, 240, 300);//改变View中内部原点的位置,同样可以改变frame的宽高[girlImageView setBounds:CGRectMake(-30, -30, 240, 230)];[self.view addSubview:girlImageView];//添加到父视图中NSLog(@"girlImageView frame:%@------girlImageView bounds:%@",NSStringFromCGRect(girlImageView.frame),NSStringFromCGRect(girlImageView.bounds));

 图片效果:

打印效果如下:

2015-04-03 11:57:06.738 MyContraint[2019:102665] girlImageView frame:{{40, 75}, {240, 230}}------girlImageView bounds:{{-30, -30}, {240, 230}}
2015-04-03 11:57:06.739 MyContraint[2019:102665] childView frame:{{0, 0}, {100, 100}}-------childView bounds:{{0, 0}, {100, 100}}

 通过以上的代码的演示,frame和bounds之间的关系应该很清晰了,如果有疑问,欢迎共同探讨~

iOS开发-View中frame和bounds区别相关推荐

  1. (0046) iOS开发之View的frame和bounds之解惑

    iOS view的frame和bounds之解惑 frame: 该view在父view坐标系统中的位置和大小.(参照点是,父亲的坐标系统) bounds:该view在本地坐标系统中的位置和大小.(参照 ...

  2. iOS开发 Xcode8中遇到的问题及改动

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发 Xcode8中遇到的问题及改动 新版本发布总会有很多坑,也会有很多改动. 一个一个填吧... 一.遇到的问题 1. ...

  3. iOS开发——基础篇——iOS开发 Xcode8中遇到的问题及改动

    iOS开发 Xcode8中遇到的问题及改动 新版本发布总会有很多坑,也会有很多改动. 一个一个填吧... 一.遇到的问题 1.权限以及相关设置 iOS10系统下调用系统相册.相机功能,或者苹果健康都会 ...

  4. iOS中frame和Bounds之间的区别

    frame frame是每个view必备的属性,代表的是当前视图的位置和大小,没有设置他,当前视图是看不到的.位置需要有参照物才能确定,数学中我们用坐标系来确定坐标系中的某个点的位置,iOS中有他特有 ...

  5. iOS开发UI中懒加载的使用方法

    1.懒加载基本 懒加载--也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其getter方法.说的通俗一点,就是在开发中,当程序中需要利用的资源时.在程序启动的时候不加载 ...

  6. iOS开发Storyboard中UITableView顶部默认空白 - 芒果iOS

    [主要内容:] 1. 问题描述 2.问题分析 3. 解决问题办法 一.问题描述 前两天开发的时候在StoryBoard中创建了一个UITableView,但是拖到Controller里边之后,UITa ...

  7. iOS开发-简历中需要特别注意的 3 个点

    本次要说的内容,是关于简历的,网上其实流传了很多的简历模版,但是大部分都没有说这些模版到底好在哪,所以很多人就算拿过来用了,最后也是貌似神离. 今天我不讲形式,只说内容,简历中请一定要注意的 3 个问 ...

  8. iOS开发——项目中的地图跳转(苹果地图,百度地图,高德地图)

    最近项目中遇到一个小需求,就是点击地图上的大头针进行导航,如果手机中装了多种地图软件,就用提示框显示出来,如果没有装地图软件,就默认跳转到苹果自带的地图进行导航,代码如下: //导航按钮 - (voi ...

  9. iOS开发——NSArray中的字典排序

    手头上碰到一个项目,需要给数组中的字典中的一个字段排序,想了想,干脆再字典中增加一个字段,用来记录需要排序字段的第一个字符,用它来作为比较的对象,进行排序. - (void)viewDidLoad { ...

最新文章

  1. 服务器硬盘如何增加分区,服务器硬盘分区方法是什么?
  2. 解决重写父类的方法且不会影响继承的子类的问题
  3. (课程学习笔记)Python初级入门精讲
  4. java定时增量同步,一种可配置的定时数据同步方法与流程
  5. Javascrip—前端本地存储讲解(16)
  6. Java即时类| plus()方法与示例
  7. 设计没灵感,哪些网站可以参考?
  8. 腾讯研发总监王辉:十亿级视频播放技术优化揭秘
  9. 物理、化学实验仪器与设备
  10. VMware资源集合,分享一波
  11. linux 启动作业,[转载] 随身带着走的作业系统 ~安装Linux作业系统于随身碟~
  12. 【图像融合】基于matlab PCA图像融合【含Matlab源码 723期】
  13. 飞利浦 f718 java 微信_第一次使用飞利浦F718手机感觉怎么样及优缺点
  14. PASCAL标准过程与函数
  15. 软件工程导论复习知识点
  16. javascript设置cookie高级篇可跨域访问
  17. python 单词发音-[Python]通过有道词典API获取单词发音MP3
  18. mysql 以空间换时间专研
  19. 《拼多多为什么崛起?》总结笔记
  20. 普渡大学的计算机工程,普渡大学(Purdue University)计算机工程专业解读 (2016-03-11 11:27:11)转载▼...

热门文章

  1. 栈实现队列(队列实现栈)
  2. 作为Java开发工程师,如何高效优雅地编写接口文档
  3. selenium 定位方式5
  4. 请实现一个函数,用来判断一棵二叉树是不是对称的。
  5. android computescroll_Android Scroller与computeScroll的调用机制关系
  6. gps频率范围_以GPS为例讲解射频接收阻抗匹配的过程
  7. 适合转HTML5大前端的5类人!有你吗?
  8. 笔记本电脑散热器声音很大怎么办_笔记本电脑长时间高温运行有什么危害
  9. iptv管理系统php制作,双子星IPTV管理系统搭建教程
  10. go 是常驻内存吗_图解 Go 内存分配器