首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么UIView中有框架矩形和边界矩形?

在iOS开发中,UIView有两个重要的属性:frame和bounds。这两个属性都是CGRect类型,表示视图在父视图中的位置和大小。尽管它们的名称相似,但它们的含义和用途有所不同。

  1. 框架矩形(frame): 框架矩形表示视图在其父视图坐标系中的位置和大小。frame的原点是视图的左上角,而不是其父视图的左上角。当你改变frame的值时,视图会相应地移动或调整大小。
  2. 边界矩形(bounds): 边界矩形表示视图在其自身坐标系中的位置和大小。边界矩形的原点始终位于视图的左上角。当你改变bounds的值时,视图内容会相应地调整,但视图的大小和位置不会改变。

为什么UIView中有框架矩形和边界矩形呢?这是因为它们在不同的场景下发挥作用。框架矩形主要用于处理视图之间的相对位置和大小,而边界矩形则用于处理视图内部的内容和坐标系。通过同时使用这两个属性,开发者可以更灵活地控制视图的布局和显示效果。

总结:

  • 框架矩形(frame)用于处理视图之间的相对位置和大小。
  • 边界矩形(bounds)用于处理视图内部的内容和坐标系。

综上所述,UIView中有框架矩形和边界矩形,是为了更好地处理视图的布局和显示效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UIview

UIView UIView类定义了一个矩形区域在屏幕上和管理内容的接口。 Overview 在运行时,一个视图对象处理任何内容的呈现它的面积,还处理任何与内容交互。...UIView类本身提供了基本行为与背景颜色填充的矩形区域。更复杂的内容可以被子类化UIView提出和实施必要的图纸和事件处理代码。...这里有几个: 绘图和动画 视图画内容在矩形区域使用UIKit等技术,核心图形和OpenGL ES。 一些可以动画视图声明的属性的新值。...一个视图的几何定义框架,边界和中心属性。框架定义了视图的起源和维度的坐标系统中常用它的父视图和布局调整视图的大小或位置。中心属性可以用来调整视图的位置不改变它的大小。...边界定义视图,把他们的内部维度和几乎完全用于自定义代码。的尺寸部分框架和边界矩形耦合在一起,因此改变大小的矩形更新的大小。如何使用UIView类的详细信息,看到视图iOS编程指南。

71710

如何手动实现一个 UIScrollView

image.png 注意: 这个逻辑坐标系并不关注包含在其中 View 的宽度和高度,整个坐标系没有边界向四周无限延伸。 我们在坐标系中放置四个子 View,每一次色块代表一个 View: ?...的文档中是这样描述 bounds 属性的: bounds矩形…描述了该视图在其自身坐标系中的位置和大小。...一个 View 可以被看作是定义在其所在坐标系平面上的一个矩形的可视区域,View 的边界表明了这个矩形可视区域的位置和大小。 假设我们的 View 宽320像素,高480像素,原点在(0,0)。...位于该 View 边界外的区域依然存在,只是被隐藏起来了。 ? image.png 一个 View 提供了其所在平面的一个观察口,View 的 bounds 矩形描述了这个可是区域的位置和大小。...View坐标系中的位置和大小。

71040
  • CALayer 图层概念二、CALayer属性二、方法

    UIView负责监听和相应事件.UIView是更高层的封装 在 iOS 中,你能看得见,摸得着的东西基本上都是UIView.比如一个按钮,一个文本标签,一个文本输入框, 一个图标等.这些都是UIView...首先 : CALayer是定义在QuartzCore框架中. CGImageRef, CGColorRef两种数据类型是定义在CoreGraphics框架中的....其次 : QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOS和Mac OS X上都能使用 (C语言编写) 但是UIKit只能在iOS中使用 (OC编写)....此处可以和UIView的clipToBounds来比较记忆(clipToBounds为yes会使其上的内容包括子视图不能超出边界) 控件截图裁剪的三种方法: 给layer设置圆角半径layer.cornerRadius...self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"me"]]; 可动画属性(隐式动画) 凡是文档中有

    1.4K70

    View编程指南

    UIKit和其他系统框架提供了许多views,你可以很少或根本没有修改就直接使用或者根据需要自定义View。...View架构基础 大部分你可能想要做的事情都是通过view对象来完成的 - UIView类的实例。view对象在屏幕上定义了一个矩形区域,并处理该区域中的drawing和touch事件。...该属性接受一个矩形,其值被规范化为0.0到1.0的范围。当拉伸View时,系统将这些归一化值乘以view的当前边界和比例因子,以确定哪些像素或像素需要拉伸。...无论子view是否可视化剪切,触摸事件总是尊重目标view的superview的边界矩形。...默认情况下,view使用UIViewContentModeScaleToFill内容模式,该模式缩放view的现有内容以适合view的框架矩形。

    2.3K20

    图层树和寄宿图 -- iOS Core Animation 系列一

    CALayer类在概念上和UIView类似,也是一些被层级关系树管理的矩形块,也可以包含一些内容,并且管理子视图的位置。...1.3 平行的层级关系 每个UIView都对应着一个CALayer,视图的职责是创建并管理这个图层,以确保党子视图在层级关系中添加或者被移除的时候,他们对应的图层也同样的在对应的层级关系树中有相同的操作...但是有时候我们只使用UIView还是会有些捉襟见肘的,CALayer暴露了一些UIView没有提供的功能: 阴影、圆角、边框 3D变换 非矩形范围 透明遮罩 非线性动画 ---- 2.寄宿图 2.1...2.1.4 maskToBounds 看上面最新的运行图,发现图片超出了视图的边界。因为默认情况下,UIView仍会绘制超过边界的内容,在CALayer也不例外。...UIView有个clipsToBounds属性来决定是否显示超出边界的内容。CALayer对应的属性叫做maskToBounds,把它设置成YES就可以不显示超出部分的图片了。

    1.2K20

    详解CALayer的anchorPoint和position

    CALayer CALayer属于QuartzCore框架,用于在iOS和Mac OS系统上可见元素的绘制,和属于UIKit框架的UIView的关系是,UIView默认会创建一个CALayer属性...CALayer具备以下UIView没有的功能: 阴影, 圆角, 边框 3D变换 非矩形范围 透明遮罩 多级非线性动画 布局 要分析CALayer的anchorPoint和position属性,首先要讨论一下...我们所熟悉的UIView有三个重要的布局属性:frame,bounds和center,CALayer对应的叫做 frame,bounds和position. frame代表了图层的外部坐标(在父图层上占据的空间...图1 图2 像UIView有superView与subView的概念一样,CALayer也有superLayer与layer的概念,前面说到的白纸和图中的矩形可以理解为layer,书桌和图中矩形以外的坐标系可以理解成...如果各自以左上角为原点,则在图中有相对的两个坐标空间。 position 在图1中,anchorPoint有(0.5,0.5)和(0,0)两种情况,分别为矩形的中心点与原点。

    1.1K30

    iOS动画-CALayer基础知识

    图层与视图的底层关系.png UIView、UIColor、UIImage都定义于UIKit框架中; CALayer定义在QuartzCore框架中的CoreAnimation中; CGImageRef...、CGColorRef两种数据类型是定义在Core Graphics框架中; QuartzCore框架和CoreGraphics框架可以跨平台使用,在iOS和Mac OS上都能使用 ,但是UIKit却只能在...下面是一些UIView没有暴露出来的CALayer的功能: 设置阴影、圆角、带颜色边框 3D变换 非矩形范围 透明遮罩 多级非线性动画 二、CALyer寄宿图与contents属性 CALayer具有和...UIView一样的层级关系树,可用于显示一个矩形块。...frame&&bounds.png 上图对原有视图做了旋转变换,之后的frame实际上代表了覆盖在图层旋转之后的整个轴对齐的矩形区域,此时frame的宽和高和bounds不再一致了。

    1.9K50

    【IOS开发基础系列】UIView专题

    在ios7里边,主窗口和次窗口是没有区别的。         在ios7以前中有区别:哪个是主窗口,后面设置为主窗口会把之前设置的覆盖掉。...否者视图和接收者必须属于同一个UIwindow对象 返回值     一个转换过的矩形 didAddSubview:     告诉视图当子视图已经添加 - (void) didAddSubview: (UIView...当这个方法被调用,接收者可以假定他的帧在坐标上已经转换,边界矩形已经应用;所有他要做的就是绘制自定义的方法。...设置这个属性用来改变中心和边界属性。 返回值     一个初始化的视图对象,如果没有被创建那就返回nil 讨论     一个新的视图对象必须添加到视图链中才能使用。...UIView可以产生动画效果的变化包括:     • 位置变化:在屏幕上移动视图。     • 大小变化:改变视图框架(frame)和边界。     • 拉伸变化:改变视图内容的延展区域。

    70630

    Core Animation Programming

    Core Animaiton 分类 提供显示内容的图层类 动画和计时类 布局和约束类 事务类,在原子更新的时候组合图层类 核心动画是包括了基础类Quartz 核心框架(Quartz Core Framework...一个我们最常用的控件,我们是否真正了解它What's CALayer CALayer 类是一个与UIView 非常类似的类. 同样也是被层级关系树管理的矩形块....也能管理子视图的位置.甚至CALayer 是有很多方法和属性来做动画处理和变换处理. 但是,CALayer与UIView在功能上的区别在哪儿CALayer 不处理用户交互....为什么iOS要基于UIView 和 CALayer 提供两个平行的层级关系. 苹果为何要如此设计?为何不用一个简单的层级来处理所有的事情. 其实原因在于职责分离,这样可以避免很多重复代码....这就是为何iOS开发界面使用UIKit 和UIView ,而Mac OS 开发界面使用AppKit 和 NSView.

    1.1K10

    View编程指南(三)

    绘画和动画 view在其矩形区域绘制内容。 一些view属性可以动画变成新的值。 事件处理 view可以接收触摸事件。 view参与响应者链。...:viewRect]; 设置View的属性 UIView类有几个声明的属性来控制View的外观和行为。...当subview添加到其父项时,subview的当前frame矩形表示它在superview内的初始位置。frame位于其superview的可见边界之外的subview在默认情况下不会被剪切。...运行时调整View的大小和位置 每当view的大小发生变化时,其subview的大小和位置都必须相应地改变。 UIView类支持view hierarchy中的view的自动和手动布局。...当它处理触摸事件时,UIKit使用UIView的hitTest:withEvent:和pointInside:withEvent:方法来确定触摸事件是否发生在给定view的边界内。

    1.8K30

    YYText 源码剖析:CoreText 与异步绘制

    框架代码量非常大,本文主要讲解框架基于 CoreText 的底层基础部分,不会过多的讲解 YYLabel 和 YYTextView 的细节。...在该类中有数个静态函数作为回调,比如当回调GetAscentCallback()函数时,将持有对象的ascent属性作为返回值。...1、计算绘制路径和路径的位置矩形 基于YYTextContainer对象计算得到CGPathRef是主要逻辑,为了避免矩阵属性出现负值,使用CGRectStandardize(...)来矫正。...计算逻辑大致是这样的: 遍历所有 line,当当前 line 和 last line 为同一行时,取 line 和 last line 共同的最大上下边界: lastHead = MIN(lastHead...foot1和head2之间会存在一个间隙,这个间隙就是行间距,框架的处理是将这个间隙均分: ?

    4.2K30

    彻底理解position与anchorPoint

    每一个UIView内部都默认关联着一个CALayer, UIView有frame、bounds和center三个属性,CALayer也有类似的属性,分别为frame、bounds、position、anchorPoint...图2 像UIView有superView与subView的概念一样,CALayer也有superLayer与layer的概念,前面说到的白纸和图中的矩形可以理解为layer,书桌和图中矩形以外的坐标系可以理解成...如果各自以左上角为原点,则在图中有相对的两个坐标空间。 position 在图1中,anchorPoint有(0.5,0.5)和(0,0)两种情况,分别为矩形的中心点与原点。...理解与运用 在Apple doc对frame的描述中有这么一句话: Layers have an implicit frame that is a function of the position, bounds...其实,position是点,bounds是矩形,根据锚点(anchorPoint)来确定的只是它们的位置,而不是内部属性。

    1.8K10

    iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程

    UIViewAnimation动画的使用:http://my.oschina.net/u/2340880/blog/484457  UIView动画执行的另一种方式:http://my.oschina.net.../u/2340880/blog/484538 UIView转场动画:http://my.oschina.net/u/2340880/blog/484669 CoreAnimation隐式动画的应用:http...OpenGL与CoreGraphics图像处理框架的一个跨平台的动画框架。...通过position决定了layer所在的位置,在Layer中,虽然也有frame这样的属性,但我们很少使用,一般我们会使用bounds和position确定Layer层的大小和位置。...上面两个矩形,frame和bounds都是一样的,第一个矩形的锚点位置为(0.5,0.5),第二个为(0,0), 因此,两个矩形的position点是不同的,第一个是(100,100),第二个是(40,60

    1K30

    《Motion Design for iOS》(十五)

    从UIKit和CoreAnimation开始 通常情况下,iOS app中屏幕上的物体都是UIView对象。它们是矩形的并且有坐标和大小来定义它们在屏幕上的位置和尺寸。...这些是为某些功能或特性特定的特殊的UIView对象。包括作为界面按钮的UIButton、用来显示图片的UIImageView、显示文本的UILabel和显示列表的UITableView。...你也可以通过绘制任何你想要的东西来完全自定义UIView。 这是我的app Interesting for iPhone的截屏和界面中一些视图的分解。...一个UIView本质上是一个包含内部图形的矩形。在屏幕上布局,靠近或在其他视图的顶部,还可能会有高级的透明效果来整合到一起或者快速绘制。...这就是为什么苹果公司开发了Core Animation。 查看完整合集:https://github.com/Cloudox/Motion-Design-for-iOS 查看作者首页

    85640

    iOS 中使用 OpenGL 实现增高功能

    OpenGL 里面坐标是以左下角为原点 X 轴向上为正,Y 轴向右为正 # 功能实现 渲染图片拆分图片: 拆分方法 1:通过图形看出是一个矩形,而矩形是可以分成两个三角形和四个顶点,通过此可以用 GL...DEMO 中所做的任何拉伸操作都是对中间矩形的操作,换而言之就是改变最上面的矩形和最下面的矩形之间的距离来达到对中间区域的拉伸和压缩的目的。...13 1, 1, //右上 //下标为14 15 }; 手动选择区域:通过添加带有自定义手势的 UIView 来实现拖动修改选择区域。...*)customPanView centerY:(CGFloat)centerY; @end @interface CustomPanView : UIView @property (nonatomic...(imageBottom - topY) / imageHeight : (imageBottom - bottomY) / imageHeight; //将中间的矩形的顶点坐标和坐标联系裁剪区域联系起来

    56040

    iOS MachineLearning 系列(2)—— 静态图像分析之矩形识别

    1 - 矩形分析示例 与视觉相关的大部分AI能力都封装在Vision框架中,本文要介绍的是通过发起矩形分析请求来分析图片,得到分析结果后将分析出来的矩形区域绘制回原图像上。...lazy var imageView = UIImageView(image: image) // 绘制的矩形区域 var boxViews: [UIView] = [] // 图像分析请求句柄 lazy...result.boundingBox // 坐标系转换 box.origin.y = 1 - box.origin.y - box.size.height let v = UIView...CoreGraphics框架中的坐标系是一致的,其以左下角点为(0, 0)点,在UIKit框架中则是以左上角点为(0,0)点,记得进行坐标系的转换。...其中,图片的数据源可以从二进制数据加载,可以从网络加载,可以从CoreImage或CoreGraphics框架的图片对象加载等等,这里不多赘述。

    71110
    领券