gpt4 book ai didi

ios - CGSize 和 CGRect 的区别

转载 作者:技术小花猫 更新时间:2023-10-29 10:14:21 24 4
gpt4 key购买 nike

CGSize 和 CGRect 有什么区别?

作为初学者阅读 CGGeometry Reference它不是很明显,特别是因为有提到 size 是一个向量。我有点惊讶我在 StackOverflow 上找不到这个基本问题,所以我决定进一步研究它并在下面发布我的答案。

最佳答案

CGSize

CGSize 是宽度和高度。它在技术上不被视为矩形(这也是我一开始将它与 CGRect 混淆的原因之一),而只是一个大小。但是,为了便于说明,我将其表示为下面的矩形:

enter image description here

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

struct CGSize {
var width: CGFloat
var height: CGFloat
}

其中 CGFloatfloat(32 位)或 double(64 位)。 (参见 What's the difference between using CGFloat and float?)

您可以通过执行以下操作来制作 CGSize:

var size = CGSize(width: 50, height: 30)

CGRect

CGRect 是一个矩形。但是,从名称中不能立即看出的是,除了宽度和高度之外,它还有一个来源。

enter image description here

相比之下,

CGsize 没有来源。

CGRect 也是一个结构体。事实上,它是结构的结构:CGPoint(原点)和CGSize(宽度和高度)。在这里:

struct CGRect {
var origin: CGPoint
var size: CGSize
}

CGPoint 在哪里

struct CGPoint {
var x: CGFloat
var y: CGFloat
}

您可以通过执行以下操作创建一个CGRect:

var rect = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 50, height: 30))

负宽高

宽度和高度值可以是负数。我们可以通过 CGRect 查看它的样子。注意原点如何出现在不同的角上:

enter image description here

载体

documentation for CGSize

A CGSize structure is sometimes used to represent a distance vector, rather than a physical size. As a vector, its values can be negative. To normalize a CGRect structure so that its size is represented by positive values, call the CGRectStandardize function.

Vectors在数学中有大小(或长度)和方向。虽然 CGSize 没有原点,但您可以从下图中看出宽度和高度及其关联的正值或负值如何给出长度和方向。

enter image description here

进一步阅读

关于ios - CGSize 和 CGRect 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com