开发中调整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. iOS View的Frame和bounds之区别,setbounds使用(深入探究)

    前言: 在ios开发中经常遇到两个词Frame和bounds,本文主要阐述Frame和bound的区别,尤其是bound很绕,较难理解. 一.首先,看一下公认的资料: 先看到下面的代码你肯定就明白了一 ...

  2. UIView的frame和bounds区别

    UIView的frame和bounds区别 iOS中,大家肯定对view和frame都不陌生,我们设置view在父view中的位置和大小时,只需要设置frame就可以了. 可能大家也有查过网上的一些资 ...

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

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

  4. 20130829ios cocos2d下拉列表的向上弹出实现(ios开发遇到的frame的问题)

    前几天仔细区分了ios中frame,bounds,center之间的关系. Frame:边框矩形,是视图相对于其父坐标的位置和大小 Bounds:边界矩形,是本地坐标系统(一般较少使用) Center ...

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

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

  6. iOS开发中frame与bounds的区别

    闲话不多说,先上两张图,大伙们就已经明白了: 显示出来的效果是这样子滴:  总结: 要理清这两者的区别,最主要的要理解一下几个概念:frame可以理解为可视的范围,而bounds可以理解为可视范围内的 ...

  7. ios基础之 view的frame 与 bounds 的区别 (转)

    前言: 学习ios开发有一段时间了,项目也做了两个了,今天看视频,突然发现view的frame和bound两个属性,发现bound怎么也想不明白,好像饶你了死胡同里,经过一番尝试和思考,终于弄明白bo ...

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

    前言: 学习ios开发有一段时间了,项目也做了两个了,今天看视频,突然发现view的frame和bound两个属性,发现bound怎么也想不明白,好像饶你了死胡同里,经过一番尝试和思考,终于弄明白bo ...

  9. IOS 中frame与bounds的区别

    文章摘要:http://www.sendong.com/news1733.html bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系 ...

随机推荐

  1. NOIP2015其余几道题

    T1: #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> # ...

  2. 2018年牛客网NOIP赛前训练营游记

    2018年牛客网NOIP赛前训练营游记 提高组(第一场) 中位数 #include<cstdio> #include<cctype> #include<climits&g ...

  3. zoj 3662 第37届ACM/ICPC长春赛区H题(DP)

    题目:给出K个数,使得这K个数的和为N,LCM为M,问有多少种 f[i][j][k]表示选i个数,总和为j,最小公倍数为k memery卡的比较紧,注意不要开太大,按照题目数据开 这种类型的dp也是第 ...

  4. 15、Redis的集群

     写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------------------- ...

  5. STM32F2x Is it possible to request multiple DMA streams with single request

    I want to setup an application, where a single trigger-factor (compare-match of a timer) shall reque ...

  6. 使用Edge模式通知Internet Explorer以最高级别的可用模式显示内容

    一.EasyUI$的window('open')在IE8下兼容性问题 今天在公司使用EasyUI的$('#win').window('open');方法打开一个window窗体时发现EaysUI的脚本 ...

  7. 解决ASP.NET MVC4中使用Html.DropDownListFor显示枚举值默认项问题

    从ASP.NET MVC 5开始,Html.DropDownListFor已经提供了对Enum的支持,但在这以前,需要通过帮助方法或扩展方法来让Html.DropDownListFor显示枚举值. 本 ...

  8. ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积02, 在界面实现

    在"ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积01, 在控制台实现"中,在控制台应用程序中实现了属性值的笛卡尔乘积.本篇在界面中实现.需要实现的大致如下: 在界面 ...

  9. Download Hacking Team Database from torrent using magnet link

    20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送) 国内私募机构九鼎控股打造,九鼎投资是在全国股 ...

  10. 在NDK C++线程中如何调用JAVA API

    from://http://www.eoeandroid.com/thread-150995-1-1.html 在NDK中创建的线程中, 只允许调用静态的Java API. 当在线程中调用env-&g ...