gpt4 book ai didi

arrays - 在此过程中创建包含 UIBezierPath 和 NSArray x Array 的 CGRect

转载 作者:可可西里 更新时间:2023-11-01 01:07:29 28 4
gpt4 key购买 nike

我需要做的就是创建一个包含 UIBezierPathCGRect 并且我有一个 CGPoint 数组。

要创建此 CGRect,我需要做的就是枚举 CGPoint 数组并找到最小和最大 X 和 Y 坐标。

然后我想起了古老而优秀的 NSArray 有一个名为 valueForKeyPath 的函数,它可以与类似 valueForKeyPath:@max.x< 的东西结合使用valueForKeyPath:@min.x 可以神奇地找到 x 和 y 的最小值和最大值。

我是 Swift 的新手。这是我第一次使用 Swift 编写严肃的代码。

Swift 数组中有什么神奇的东西可以用来做到这一点,而不是创建复杂的枚举和循环吗?

最佳答案

如果您已经有了 UIBezierPath,那么简单的解决方案就是获取它的 bounds :

let rect = path.bounds

如果你有一个点数组并且想要包含这些点的边界,你可以使用 minmax xy 坐标,但我可能会减少 union所有要点:

let points = [
CGPoint(x: 200, y: 200),
CGPoint(x: 300, y: 300),
CGPoint(x: 200, y: 400),
CGPoint(x: 100, y: 300)
]

let rect = points.first.map { firstPoint in
points.dropFirst()
.reduce(CGRect(origin: firstPoint, size: .zero)) { rect, point in
rect.union(CGRect(origin: point, size: .zero))
}
}

关于arrays - 在此过程中创建包含 UIBezierPath 和 NSArray x Array 的 CGRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55053808/

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