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

标签 arrays swift max minimum

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

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

然后我想起古老而优秀的 NSArray 有一个名为 valueForKeyPath 的函数,它可以与 valueForKeyPath:@max.xvalueForKeyPath:@min.x 可以神奇地找到 x 和 y 的最小值和最大值。

我是 Swift 新手。这是我第一次使用 Swift 来创建严肃的代码。

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

最佳答案

简单的解决方案,如果您已经有 UIBezierPath ,就是得到它的 bounds :

let rect = path.bounds

如果您有一个点数组并希望其边界包含这些点,您可以 minmax xy坐标,但我可能 reduce 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/

相关文章:

javascript - Algolia 搜索和嵌套数组

javascript - 更高效的 JS 大小写交换

python - 沿一维的 1D 数组和 3D 数组的高效乘积 - NumPy

ios - 如何注册通知类别?

ios - 用户跟踪模式缺少动画,Swift

ios - 带有 libxml 的 Swift 框架

mysql - Select max 在 MySQL 中返回错误值

javascript - 如何更改多维数组中的顺序然后在 javascript 中对一个子数组进行排序?

java - 如何在Java中找到数组中的最大数字

python - 同时计算两个最大值?