Swift二维空间尺寸CGSize
Swift二维空间尺寸CGSize

Swift二维空间尺寸CGSize

CGSize 是 Swift 和 Apple 平台(如 iOS 和 macOS)中的一个结构,用于表示二维空间中的尺寸(宽度和高度)。它是 Core Graphics 框架的一部分,通常用于指定某个视图或图形对象的大小。

定义

CGSize 是一个结构体,定义在 Core Graphics 中:

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

width: 表示宽度。

height: 表示高度。

它们的类型是 CGFloat,这是一个用于表示浮点值的类型。

创建 CGSize 实例

1、默认初始化

通过显式地指定宽度和高度来创建:

var size = CGSize(width: 100, height: 200)

2、使用零值

可以使用 .zero 创建一个宽度和高度都为 0 的 CGSize:

let zeroSize = CGSize.zero
// 等价于 CGSize(width: 0, height: 0)

3、使用常量

如果需要固定大小,可以直接使用常量:

let squareSize = CGSize(width: 50, height: 50)

常见用法

1、设置视图大小

在 SwiftUI 或 UIKit 中,可以使用 CGSize 设置视图的尺寸。

let frameSize = CGSize(width: 200, height: 100)

在 SwiftUI 中与 .frame 配合使用:

Rectangle()
    .frame(width: frameSize.width,height: frameSize.height)

2、绘图和布局

在 Core Graphics 或 Core Animation 中,CGSize 常用于绘制操作,例如:

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

3、调整尺寸

可以使用简单的数学操作调整 CGSize 的大小:

var size = CGSize(width: 50, height: 100)
size.width += 20
size.height *= 2
// size 现在是 CGSize(width: 70, height: 200)

属性和方法

1)属性

width: 尺寸的宽度。

height: 尺寸的高度。

zero: 一个宽高为 0 的静态常量。

2)方法

由于 CGSize 是一个结构体,支持算术运算或比较:

let size1 = CGSize(width: 50, height: 50)
let size2 = CGSize(width: 50, height: 50)
print(size1 == size2) // true

与其他结构的配合

1、与 CGRect 配合

CGSize 常与 CGRect 搭配,用于指定矩形的尺寸:

let rect = CGRect(origin: CGPoint(x: 10, y: 10), size: CGSize(width: 100, height: 50))

2、与 UIView 配合

在 UIKit 中可以用来设置视图的 bounds 或 frame:

let view = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 200, height: 100)))

示例:调整图片尺寸

假设有一个图片,需要根据比例调整其尺寸:

func resize(imageSize: CGSize, to targetWidth: CGFloat) -> CGSize {
    let aspectRatio = imageSize.height / imageSize.width
    return CGSize(width: targetWidth, height: targetWidth * aspectRatio)
}

let originalSize = CGSize(width: 400, height: 200)
let newSize = resize(imageSize: originalSize, to: 100)
print(newSize) // CGSize(width: 100.0, height: 50.0)

总结

CGSize 是一个非常基础但强大的结构,用于表示二维空间中的尺寸。无论是在布局还是绘图中,它都广泛应用,是开发 Apple 平台应用时不可或缺的工具。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注