`
whui0110
  • 浏览: 84266 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

(转)ios-坐标系统(详解UIView的frame、bounds跟center属性[图])

    博客分类:
  • ios
 
阅读更多

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

    这个压缩包“ios-UIView分类,可直接修改frame的值.zip”提供了一个`UIView`的分类,允许开发者更方便地调整视图的位置和大小。这种功能在布局和动画中尤其有用,因为频繁修改视图的属性时,简洁的代码可以提高效率...

    ios-UIView设置局部阴影,左右上下,左右底部阴影.zip

    在iOS开发中,为UIView添加局部阴影是一种常见的视觉优化手段,可以增强用户界面的层次感和立体感。本文将深入探讨如何实现标题所指的"ios-UIView设置局部阴影,左右上下,左右底部阴影"这一功能,同时参考提供的...

    iOS view的frame和bounds之区别.pdf

    在iOS开发中,视图(UIView)的frame和bounds是两个非常重要的属性,它们都是CGRect类型,包含了视图的位置和大小信息。但是这两个属性在概念和使用上有所区别,了解这些差异对于开发iOS应用至关重要。 首先,frame...

    ios-UIView分类,可直接修改frame的值并直接连续设置控件常用属性.zip

    功能3:设置label的frame,title,textColor,font,backgroundColor,textAlignment(因没有提示,textAlignment属性建议使用系统方法设置) 功能四:设置view的frame及backgroundColor 功能五: ...

    UIView-Positioning, 在UIView对象中,基于简单属性的框架属性设置.zip

    UIView-Positioning, 在UIView对象中,基于简单属性的框架属性设置 uiview定位收费 UIView Positioning 是一个快速扩展,它提供简单的shorthand 方法,以方便的方式定义任何UIView对象的框架属性( 宽度,高度,x,y ...

    iOS KVO 监听frame

    在标题“iOS KVO 监听frame”中,我们关注的是如何使用KVO来跟踪和响应UI控件(如UIView)的frame属性变化。这在布局动画或者动态调整界面时非常有用。下面我们将深入探讨KVO的概念、如何实现以及在监听frame变化时...

    ios-一句代码设置UIView及其子类的badgeValue.zip

    一句代码设置UIView及其子类的badgeValue,默认右上角显示 cocoaChina 上传代码比较麻烦,如果有什么问题或者添加什么功能,欢迎大家去我简书留言http://www.jianshu.com/p/497b33250ec1 喜欢的话可以关注我,...

    ios-iOS动画和特效demo.zip

    - [iOS动画和特效(一)UIView动画和CoreAnimation](http://liuyanwei.jumppo.com/2015/10/30/iOS-Animation-UIViewAndCoreAnimation.html) - [iOS动画和特效(二)UIKit力学行为]...

    ios中关于uiview

    - `UIView`中有许多属性可以进行动画操作,如`frame`、`bounds`、`center`、`transform`、`alpha`等。通过`UIView`的`animate(withDuration:animations:)`方法,可以平滑地改变这些属性,创建出流畅的动画效果。 5...

    ios-3D旋转按钮.zip

    在iOS开发中,实现3D旋转按钮特效是一种增强用户界面交互性和视觉吸引力的常见方法。这种特效能够为用户提供更生动的操作反馈,使按钮在被按下或触摸时产生立体旋转的效果,提升整体应用的用户体验。本资源"ios-3D...

    ios-为UIView添加未读消息红点.zip

    在iOS开发中,经常需要为应用的视图(UIView)添加未读消息提示,例如App图标右上角的红点。这个"ios-为UIView添加未读消息红点.zip"项目提供了一个解决方案,通过开源库Yeebadge实现。开发者Mr-yuwei在GitHub上分享...

    swift-Fireworks-为UIView添加烟花动画效果

    在Swift编程语言中,开发iOS应用时,我们经常会利用UIKit框架中的UIView来构建用户界面。为了给用户带来更丰富的视觉体验,开发者有时会为UIView添加各种动态效果,比如烟花动画。"swift-Fireworks-为UIView添加烟花...

    ios-UIView添加弹簧效果.zip

    "ios-UIView添加弹簧效果.zip"这个压缩包文件显然是一个关于如何在iOS应用中为UIView添加弹簧效果的示例项目。下面,我们将详细探讨这个知识点。 首先,弹簧效果(Spring Animation)是UIKit提供的动画类型之一,它...

    ios-UIView类别方法添加系统动画,只需一句话。.zip

    这个名为"ios-UIView类别方法添加系统动画,只需一句话。.zip"的资源提供了一个简单的方法来实现这一目标,通过扩展UIView类,开发者可以方便地使用一行代码调用各种系统内置的动画。 首先,我们要理解什么是类别...

    ios-ffmpeg openGL渲染到UIView的最简播放器(二).zip

    使用ffmpeg软解码视频数据,SDL_audio播放音频数据,SDL_thread管理线程,openGL渲染YUV420数据到UIView。项目太大,自行到github下载。

    ios-UIView加手势方法拓展..zip

    在iOS开发中,手势交互是构建用户界面的重要组成部分,它使得用户可以通过触摸屏幕的各种方式来与应用程序进行互动。本教程将深入探讨如何使用扩展(Extension)和运行时(Runtime)技术,为UIView类添加手势识别...

    IOS入门-UIView-简单地七彩霓虹灯Demo

    UIView有frame、bounds、center等属性,用于定义其位置和大小。同时,它还包含了backgroundColor、alpha等属性,可以改变视图的颜色和透明度。在这个霓虹灯Demo中,我们将主要利用backgroundColor属性来实现颜色变化...

    iOS游戏应用源代码——Dillion-iOS-Flip-Transform-c1ec28d.zip

    在Dillion-iOS-Flip-Transform-c1ec28d项目中,开发者可能使用了`UIView`的`transform`属性结合`CATransform3D`来创建翻转效果。`transform`属性允许我们对视图应用二维或三维变换,而`CATransform3D`结构体则提供了...

    ios-界面生成图片.zip

    这个"ios-界面生成图片.zip"文件提供了一个解决方案,让我们能够快速、简单地将任意指定的控件转换为图片。下面我们将详细探讨如何实现这一功能,以及涉及到的相关知识点。 首先,我们要理解的是iOS中的绘图系统。...

    ios-图片转动.zip

    在iOS开发中,图片转动是一种常见的视图动画效果,它能为用户界面增添动态感和交互性。这个“ios-图片转动.zip”压缩包可能包含一个示例项目或代码片段,用于演示如何在iOS应用中实现图片旋转的效果。在本文中,我们...

Global site tag (gtag.js) - Google Analytics