`
iaiai
  • 浏览: 2198164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

详解UIView的frame、bounds和center属性

 
阅读更多
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,也就是说,两者所在的坐标系是不同的。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);
}

  • 大小: 97.2 KB
分享到:
评论

相关推荐

    iOS view的frame和bounds之区别.pdf

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

    详解 UIView 的 Tint Color 属性.pdf

    在iOS开发中,UIView的tintColor属性是一个非常重要的特性,它允许开发者改变一个视图层次结构中所有子视图的默认着色方式,从而达到统一的视觉效果。tintColor属性在iOS 7之后被引入,主要用于为视图及其子视图定义...

    iOS KVO 监听frame

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

    定义UIView frame属性的UIView-Positioning

    定义UIView frame属性的UIView-Positioning,源码UIView-Positioning,UIView+Positioning是一个Objective-C Category,为定义UIView frame属性(宽度、高度和X、Y)提供好了简单便捷的方法。 UIView+Positioning ...

    ios-UIView分类,可直接修改frame的值.zip

    通常,`UIView`的`frame`属性是一个`CGRect`结构体,包含`origin`和`size`两个部分。`origin`是一个`CGPoint`,表示视图左上角相对于父视图的坐标;`size`是一个`CGSize`,表示视图的宽度和高度。在原生的`UIView`中...

    uiview+frame

    uiview+frame,方便UI布局,码农工具,第一次上传,测下好用不

    iOS CoreAnimation 图层几何学

    在UIView中与位置,尺寸有关的属性有 frame bounds center在此不多赘述,在CALayer中同样有与其相对应的属性 frame bounds position 需要注意的是 center与position 虽然字面表达不一样,但是其功能是一致的,为了更加...

    ios中关于uiview

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

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

    功能2:给UIButton设置各属性,包括frame、textLabel.font、textAlignment(此属性因没有提示,不推荐使用)以及四种状态下(nomal,hightlighted,selected,disabled)的image、title、titleColor、backgroudImage...

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

    基于简单属性的框架属性设置 uiview定位收费 UIView Positioning 是一个快速扩展,它提供简单的shorthand 方法,以方便的方式定义任何UIView对象的框架属性( 宽度,高度,x,y ),以及额外的属性和方法。用法只需...

    UIView的动画

    UIView本身,更像是一个管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等,实际上内部都是在访问它所包含的CALayer的相关属性。 在一个UIView对象中有以下的动画化属性: * frame:你可以使用这...

    UIView+Utils

    1. **尺寸获取**:在iOS开发中,获取视图的实际尺寸(包括frame、bounds、center等)有时会因为自动布局和屏幕尺寸变化而变得复杂。`UIView+Utils`可能提供了如`width`、`height`、`size`这样的快捷属性,直接返回...

    UIView的介绍,OC版的

    2. **布局与尺寸**:`UIView`有自己的frame,表示其在父视图中的位置和大小。同时,它有bounds属性,表示其内容区域的大小。这两个属性是坐标系统的关键。 3. **触摸事件处理**:`UIView`能响应用户的触摸事件,...

    UIViewController的加载方式和UIView的加载详解

    在iOS开发中,UIViewController和UIView是两个基础的类,用于构建用户界面。UIViewController负责管理视图的生命周期,而UIView则负责显示内容和响应用户的交互。了解UIViewController的加载方式以及UIView的加载...

    swift-DLLLayout是一个基于UIView.frame的轻量级iOS布局框架

    Swift-DLLLayout是一款专为iOS开发者设计的轻量级布局框架,它主要依赖于UIView的frame属性来实现界面元素的布局。在iOS开发中,尤其是面对复杂界面时,使用AutoLayout或者SnapKit等布局库虽然功能强大,但可能会...

    UIView/UIButton任意添加某个边框

    首先,我们需要了解`UIView`和`UIButton`的边框属性。在`UIKit`框架中,`UIView`有一个名为`layer`的属性,它是`CALayer`对象,提供了丰富的图形渲染和动画功能。`CALayer`包含了`borderWidth`(边框宽度)和`...

    IOS 开发之UIView动画的实例详解

    在动画的实现中,我们可以使用UIView的多种属性来实现不同的动画效果,例如frame、center、transform、alpha等。这些属性可以单独使用,也可以组合使用来实现更加复杂的动画效果。 在实际开发中,UIView动画广泛...

    iOS UIView类 UIViewExt工具

    1. **获取控件坐标**:在`UIView`原生API中,获取一个视图的位置和大小通常需要调用`frame`、`bounds`、`center`等属性。`UIViewExt`则提供了简化的访问方式,如`控件.bottom`可以直接获取视图底部边缘相对于其父...

    iOS实现UIView渐变效果

    接着,通过设置其frame属性,我们可以指定渐变层在UIView中的位置和大小。最后,将这个CAGradientLayer作为UIView的layer.contents,即可将渐变效果应用到UIView上。 对于描述中提到的“已封装好的实现渐变的UIView...

    IOS UIView的生命周期的实例详解

    在这两个方法中,我们可以做一些视图层次结构相关的操作,例如设置视图的frame和bounds。 3. 布局子视图(Layout Subviews):当我们添加完毕所有子视图后,系统会调用layoutSubviews方法。在这个方法中,我们可以...

Global site tag (gtag.js) - Google Analytics