macOS矩形NSRect
macOS矩形NSRect

macOS矩形NSRect

NSRect 是 macOS AppKit 中用来表示矩形区域的结构体,它描述了一个矩形的位置和大小,等价于 iOS 中的 CGRect。

基本结构

struct NSRect {
    var origin: NSPoint  // 起点(左下角)
    var size: NSSize     // 尺寸(宽度和高度)
}

NSPoint = x 和 y

NSSize = width 和 height

基本用法

let rect = NSRect(x: 100, y: 200, width: 30, height: 40)

这个矩形:左下角位于屏幕坐标 (100, 200),宽度是 30,高度是 50。

构造方法

1、简单写法

let rect = NSRect(x: 0, y: 0, width: 200, height: 100)

2、完整写法

let origin = NSPoint(x: 0, y: 0)
let size = NSSize(width: 200, height: 100)
let rect2 = NSRect(origin: origin, size: size)

常用属性和方法

1、rect.origin.x / y:起点坐标。

2、rect.size.width / height:尺寸。

3、rect.minX / maxX:最小/最大 X 值。

4、rect.minY / maxY:最小/最大 Y 值。

5、rect.midX / midY:中点坐标。

6、rect.contains(point):是否包含某个点。

7、rect.intersects(anotherRect):是否与另一个矩形相交。

8、rect.insetBy(dx:dy:):缩小(或扩大)矩形。

9、rect.offsetBy(dx:dy:):移动矩形位置。

使用场景

1、设置窗口初始大小

let window = NSWindow(
    contentRect: NSRect(x: 200, y: 200, width: 800, height: 600),
    styleMask: [.titled, .closable],
    backing: .buffered,
    defer: false
)

2、设置子视图的位置和大小

let button = NSButton(frame: NSRect(x: 20, y: 20, width: 100, height: 40))
view.addSubview(button)

3、在draw(_:)方法中绘图

override func draw(_ dirtyRect: NSRect) {
    let box = NSRect(x: 10, y: 10, width: 100, height: 50)
    NSColor.red.setFill()
    box.fill()
}

注意事项

AppKit 的坐标系统默认原点在左下角(不像 iOS 的左上角),可以通过子类设置 isFlipped = true 改变:

override var isFlipped: Bool { true }

总结

NSRect是一个矩形(位置+尺寸),由NSPoint + NSSize构成,用于控件布局、绘图、坐标计算、命中测试等。

   

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

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

发表回复

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