首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CGSize与CGRect的区别

CGSize与CGRect的区别
EN

Stack Overflow用户
提问于 2015-06-05 03:48:20
回答 2查看 8.7K关注 0票数 19

CGSize和CGRect有什么区别?

对于刚开始阅读CGGeometry参考的人来说,这并不是一目了然的,特别是因为有关于大小是向量的引用。我很惊讶我在StackOverflow上找不到这个基本的问题,所以我决定对它进行更多的研究,并在下面发布我的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-05 03:48:20

CGSize

CGSize是一个宽度和一个高度。从技术上讲,它并不是一个矩形(这也是我最初将它与CGRect混淆的原因之一),而只是一个大小。不过,为了举例说明,我将把它表示为下面的矩形:

这种宽度和高度的组合称为struct,它是结构的缩写,最初来自C语言(但我将在这里使用Swift而不是目标C语法)。结构只是一组逻辑相关的变量。在这里我们可以看到CGSize结构:

代码语言:javascript
运行
复制
struct CGSize {
  var width: CGFloat
  var height: CGFloat
}

其中CGFloat要么是float (32位),要么是double (64位)。(见使用CGFloat和float有什么区别?)

您可以通过执行以下操作来生成CGSize

代码语言:javascript
运行
复制
var size = CGSize(width: 50, height: 30)

CGRect

CGRect是一个矩形。但是,从名字上看,不太明显的是,除了宽度和高度之外,它还有一个起源。

相比之下,CGsize没有起源。

CGRect也是一种结构。事实上,它是一个结构的结构:CGPoint (原点)和CGSize (宽度和高度)。下面是:

代码语言:javascript
运行
复制
struct CGRect {
  var origin: CGPoint
  var size: CGSize
}

CGPoint在哪里

代码语言:javascript
运行
复制
struct CGPoint {
  var x: CGFloat
  var y: CGFloat
}

您可以通过执行以下操作来生成CGRect

代码语言:javascript
运行
复制
var rect = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 50, height: 30))

负宽度和高度

宽度和高度值可以是负值。我们可以看到CGRect是什么样子的。注意原点是如何出现在不同的角上的:

向量

CGSize文档

CGSize结构有时用于表示距离向量,而不是物理大小。作为一个向量,它的值可以是负值。若要规范CGRect结构,使其大小由正值表示,请调用CGRectStandardize函数。

数学中的向量有一个大小(或长度)和一个方向。虽然CGSize没有起源,但是您可以从下面的图表中看到宽度和高度以及它们相关的正或负值是如何给出长度和方向的。

进一步阅读

票数 34
EN

Stack Overflow用户

发布于 2016-08-17 02:46:00

简写版本:它们的名字令人困惑,因为它们都可以用来表示矩形。

CGSize有宽度和高度

CGRect有x,y,宽度和高度

您可以将CGRect看作具有坐标的CGSize。

CGRect通常用于指定一个UIView框架,它(顶部、左边)坐标相对于父视图的(顶部、左侧)坐标。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30658045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档