使用 NSPointToCGPoint 将 NSPoint 转换为 CGPoint
Converting NSPoint to CGPoint using NSPointToCGPoint
从 NSPoint 访问 x 和 y 坐标有多难...不敢相信。
我通过以下调用获得了一个 NSPoint:
var mouseLoc = [NSEvent .mouseLocation]
我需要访问 x 和 y 坐标。 NSPoint 不提供像 CGPoint 这样的 getter。我了解到:我必须投射到 CGPoint 但我发现的任何东西似乎在最新的 Swift 中都不起作用:
var p = (CGPoint)mouseLoc // error: Cannot convert value of type '[NSPoint]' (aka 'Array<CGPoint>') to expected argument type 'NSPoint' (aka 'CGPoint')
var p = NSPointToCGPoint(mouseLoc) // error: Cannot convert value of type '[NSPoint]' (aka 'Array<CGPoint>') to expected argument type 'NSPoint' (aka 'CGPoint')
我确信这是一个完整的初学者的东西,但我就是不明白。
这里好像mouseLoc是NSEvent的数组。遍历它并单独转换每个点或仅使用一个(第一个或最后一个元素)。
像这样迭代:
let allPoints = mouseLoc.forEach { NSPointToCGPoint([=10=]) }
但是在这种情况下你也会得到一个数组,但是现在是CGPoint。您可能只想使用其中一个,第一个或最后一个。
但也可能您有一个只有一个元素的数组 - 使用 .first.
Swift 使用与 Objective-C.
不同的语法来调用实例或 class 方法
// Objective-C
NSPoint mouseLoc = [NSEvent mouseLocation]
转换为
// Swift
let mouseLoc = NSEvent.mouseLocation
而您的 Swift 代码创建了一个包含单个 NSPoint
.
的 array
另外 NSPoint
是 CGPoint
的类型别名:
typealias NSPoint = CGPoint
因此您可以简单地使用相同的访问器:
// Swift
let mouseLoc = NSEvent.mouseLocation
let xCoord = mouseLoc.x
let yCoord = mouseLoc.y
从 NSPoint 访问 x 和 y 坐标有多难...不敢相信。
我通过以下调用获得了一个 NSPoint:
var mouseLoc = [NSEvent .mouseLocation]
我需要访问 x 和 y 坐标。 NSPoint 不提供像 CGPoint 这样的 getter。我了解到:我必须投射到 CGPoint 但我发现的任何东西似乎在最新的 Swift 中都不起作用:
var p = (CGPoint)mouseLoc // error: Cannot convert value of type '[NSPoint]' (aka 'Array<CGPoint>') to expected argument type 'NSPoint' (aka 'CGPoint')
var p = NSPointToCGPoint(mouseLoc) // error: Cannot convert value of type '[NSPoint]' (aka 'Array<CGPoint>') to expected argument type 'NSPoint' (aka 'CGPoint')
我确信这是一个完整的初学者的东西,但我就是不明白。
这里好像mouseLoc是NSEvent的数组。遍历它并单独转换每个点或仅使用一个(第一个或最后一个元素)。
像这样迭代:
let allPoints = mouseLoc.forEach { NSPointToCGPoint([=10=]) }
但是在这种情况下你也会得到一个数组,但是现在是CGPoint。您可能只想使用其中一个,第一个或最后一个。
但也可能您有一个只有一个元素的数组 - 使用 .first.
Swift 使用与 Objective-C.
不同的语法来调用实例或 class 方法// Objective-C
NSPoint mouseLoc = [NSEvent mouseLocation]
转换为
// Swift
let mouseLoc = NSEvent.mouseLocation
而您的 Swift 代码创建了一个包含单个 NSPoint
.
另外 NSPoint
是 CGPoint
的类型别名:
typealias NSPoint = CGPoint
因此您可以简单地使用相同的访问器:
// Swift
let mouseLoc = NSEvent.mouseLocation
let xCoord = mouseLoc.x
let yCoord = mouseLoc.y