1、概要
翻开ios官方开发文档,赫然发现上面对这三个属性的解释如下:
frame:描述当前视图在其父视图中的位置和大小。
bounds:描述当前视图在其自身坐标系统中的位置和大小。
center:描述当前视图的中心点在其父视图中的位置。
是不是有点迷糊?好吧,别急,让我们先说说ios的坐标系统。
2、ios坐标系统
ios以左上角为坐标原点(0,0),以原点向右侧为X轴正方向,原点下侧为Y轴正方向,如下图所示。
ios采用CGPoint来表示点在坐标系上X、Y位置。我们可以通过CGPointMake(x,y)来创建一个坐标点:CGPoint point = CGPointMake(80,40)
同时,ios采用CGSize来表示视图的宽度和高度,即视图的大小。我们可以通过CGSizeMake(width,height)来创建一个矩形的大小,如CGSize size = CGSizeMake(144,72)将创建一个宽度为144,高度为72的矩形大小。
而CGRect则是结合了CGPoint和CGSize,用来表示矩形的位置和大小。它的origin表示矩形右上角所在位置(CGPoint),size表示矩形的大小(CGSize)。
3、frame、bounds和center的区别与联系
回到frame和bounds属性,通过前面的描述不难发现,这两个属性都是用来描述视图的大小(CGSize)和位置(CGPoint)的,两者都用CGRect表示。不同的是,frame描述的是在其父视图中的CGRect,而bounds描述的是在其自身视图中的CGRect,也就是说,两者所在的坐标系是不同的。如图3所示,View B是View A的子视图,那么,View B的frame属性为origin(200,100),size(200,250),而View B的bounds属性为origin(0,0),size(200,250)。
center属性则用CGPoint表示矩形中心点在其父视图中的位置,如图3中View B的center属性为(300,200)。
frame、bounds和center三个属性是相互关联、相互影响的,其中一个属性发生变化,其他属性也会跟着变化。
4、frame、bounds和center的使用场景
一般来说,bounds属性比较少用,通常使用frame来设置视图的大小和位置,使用center来改变(移动)视图的位置(也可用frame来改变位置)。另外,对视图进行旋转、缩放也都是相对于center进行操作的。
From: http://unmi.cc/ios-bounds-frame
frame和bounds是UIView中的两个属性(property)。
frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)
bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)
-(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);
}
原文链接:http://blog.csdn.net/cheneystudy/article/details/8115593
相关推荐
这个压缩包“ios-UIView分类,可直接修改frame的值.zip”提供了一个`UIView`的分类,允许开发者更方便地调整视图的位置和大小。这种功能在布局和动画中尤其有用,因为频繁修改视图的属性时,简洁的代码可以提高效率...
在iOS开发中,为UIView添加局部阴影是一种常见的视觉优化手段,可以增强用户界面的层次感和立体感。本文将深入探讨如何实现标题所指的"ios-UIView设置局部阴影,左右上下,左右底部阴影"这一功能,同时参考提供的...
在iOS开发中,视图(UIView)的frame和bounds是两个非常重要的属性,它们都是CGRect类型,包含了视图的位置和大小信息。但是这两个属性在概念和使用上有所区别,了解这些差异对于开发iOS应用至关重要。 首先,frame...
功能3:设置label的frame,title,textColor,font,backgroundColor,textAlignment(因没有提示,textAlignment属性建议使用系统方法设置) 功能四:设置view的frame及backgroundColor 功能五: ...
UIView-Positioning, 在UIView对象中,基于简单属性的框架属性设置 uiview定位收费 UIView Positioning 是一个快速扩展,它提供简单的shorthand 方法,以方便的方式定义任何UIView对象的框架属性( 宽度,高度,x,y ...
在标题“iOS KVO 监听frame”中,我们关注的是如何使用KVO来跟踪和响应UI控件(如UIView)的frame属性变化。这在布局动画或者动态调整界面时非常有用。下面我们将深入探讨KVO的概念、如何实现以及在监听frame变化时...
一句代码设置UIView及其子类的badgeValue,默认右上角显示 cocoaChina 上传代码比较麻烦,如果有什么问题或者添加什么功能,欢迎大家去我简书留言http://www.jianshu.com/p/497b33250ec1 喜欢的话可以关注我,...
- [iOS动画和特效(一)UIView动画和CoreAnimation](http://liuyanwei.jumppo.com/2015/10/30/iOS-Animation-UIViewAndCoreAnimation.html) - [iOS动画和特效(二)UIKit力学行为]...
- `UIView`中有许多属性可以进行动画操作,如`frame`、`bounds`、`center`、`transform`、`alpha`等。通过`UIView`的`animate(withDuration:animations:)`方法,可以平滑地改变这些属性,创建出流畅的动画效果。 5...
在iOS开发中,实现3D旋转按钮特效是一种增强用户界面交互性和视觉吸引力的常见方法。这种特效能够为用户提供更生动的操作反馈,使按钮在被按下或触摸时产生立体旋转的效果,提升整体应用的用户体验。本资源"ios-3D...
在iOS开发中,经常需要为应用的视图(UIView)添加未读消息提示,例如App图标右上角的红点。这个"ios-为UIView添加未读消息红点.zip"项目提供了一个解决方案,通过开源库Yeebadge实现。开发者Mr-yuwei在GitHub上分享...
在Swift编程语言中,开发iOS应用时,我们经常会利用UIKit框架中的UIView来构建用户界面。为了给用户带来更丰富的视觉体验,开发者有时会为UIView添加各种动态效果,比如烟花动画。"swift-Fireworks-为UIView添加烟花...
"ios-UIView添加弹簧效果.zip"这个压缩包文件显然是一个关于如何在iOS应用中为UIView添加弹簧效果的示例项目。下面,我们将详细探讨这个知识点。 首先,弹簧效果(Spring Animation)是UIKit提供的动画类型之一,它...
这个名为"ios-UIView类别方法添加系统动画,只需一句话。.zip"的资源提供了一个简单的方法来实现这一目标,通过扩展UIView类,开发者可以方便地使用一行代码调用各种系统内置的动画。 首先,我们要理解什么是类别...
使用ffmpeg软解码视频数据,SDL_audio播放音频数据,SDL_thread管理线程,openGL渲染YUV420数据到UIView。项目太大,自行到github下载。
在iOS开发中,手势交互是构建用户界面的重要组成部分,它使得用户可以通过触摸屏幕的各种方式来与应用程序进行互动。本教程将深入探讨如何使用扩展(Extension)和运行时(Runtime)技术,为UIView类添加手势识别...
UIView有frame、bounds、center等属性,用于定义其位置和大小。同时,它还包含了backgroundColor、alpha等属性,可以改变视图的颜色和透明度。在这个霓虹灯Demo中,我们将主要利用backgroundColor属性来实现颜色变化...
在Dillion-iOS-Flip-Transform-c1ec28d项目中,开发者可能使用了`UIView`的`transform`属性结合`CATransform3D`来创建翻转效果。`transform`属性允许我们对视图应用二维或三维变换,而`CATransform3D`结构体则提供了...
这个"ios-界面生成图片.zip"文件提供了一个解决方案,让我们能够快速、简单地将任意指定的控件转换为图片。下面我们将详细探讨如何实现这一功能,以及涉及到的相关知识点。 首先,我们要理解的是iOS中的绘图系统。...
在iOS开发中,图片转动是一种常见的视图动画效果,它能为用户界面增添动态感和交互性。这个“ios-图片转动.zip”压缩包可能包含一个示例项目或代码片段,用于演示如何在iOS应用中实现图片旋转的效果。在本文中,我们...