我将如何从接触点获取最低和最高坐标数?
How would I go about getting the lowest and highest coordinate numbers from touchpoints?
我想从 touchesmoved 事件中获取最低和最高的 x 和 y 坐标,无论绘制的形状是什么。基本上我想创建一个包含形状的 cgrect。我不知道该怎么做。
有多种方法可以做到这一点。
UIBezierPath
有一个 bounds 方法,它会给你一个包含路径中所有点的边界矩形。如果您要将形状构建成 UIBezierPath
,那应该就是您所需要的。
如果您需要自己跟踪边界,设置一些变量并根据需要进行调整:
var minY = CGFloat.greatestFiniteMagnitude
var maxY = -CGFloat.greatestFiniteMagnitude
var minX = CGFloat.greatestFiniteMagnitude
var maxX = -CGFloat.greatestFiniteMagnitude
当您从用户那里收集积分时,如果 x
坐标是 < minX
,请更新 minX
。如果是 > maxX
,请更新 maxX
。对 minY
和 maxY
执行相同的操作。
获得 x
和 y
的最大值和最小值后,将这些值转换为边界矩形就很简单了。一些示例代码:
extension CGRect {
init(minX: CGFloat,
minY: CGFloat,
maxX: CGFloat,
maxY: CGFloat) {
self.init()
origin = CGPoint(x: minX, y: minY)
size = CGSize(width: maxX - minX, height: maxY - minY)
}
}
let aMinX: CGFloat = CGFloat(Int.random(in: 0...50))
let aMinY: CGFloat = CGFloat(Int.random(in: 0...50))
let aMaxX: CGFloat = CGFloat(Int.random(in: 60...200))
let aMaxY: CGFloat = CGFloat(Int.random(in: 60...200))
let aRect: CGRect = CGRect(minX: aMinX,
minY: aMinY,
maxX: aMaxX,
maxY: aMaxY)
print(aRect)
我想从 touchesmoved 事件中获取最低和最高的 x 和 y 坐标,无论绘制的形状是什么。基本上我想创建一个包含形状的 cgrect。我不知道该怎么做。
有多种方法可以做到这一点。
UIBezierPath
有一个 bounds 方法,它会给你一个包含路径中所有点的边界矩形。如果您要将形状构建成 UIBezierPath
,那应该就是您所需要的。
如果您需要自己跟踪边界,设置一些变量并根据需要进行调整:
var minY = CGFloat.greatestFiniteMagnitude
var maxY = -CGFloat.greatestFiniteMagnitude
var minX = CGFloat.greatestFiniteMagnitude
var maxX = -CGFloat.greatestFiniteMagnitude
当您从用户那里收集积分时,如果 x
坐标是 < minX
,请更新 minX
。如果是 > maxX
,请更新 maxX
。对 minY
和 maxY
执行相同的操作。
获得 x
和 y
的最大值和最小值后,将这些值转换为边界矩形就很简单了。一些示例代码:
extension CGRect {
init(minX: CGFloat,
minY: CGFloat,
maxX: CGFloat,
maxY: CGFloat) {
self.init()
origin = CGPoint(x: minX, y: minY)
size = CGSize(width: maxX - minX, height: maxY - minY)
}
}
let aMinX: CGFloat = CGFloat(Int.random(in: 0...50))
let aMinY: CGFloat = CGFloat(Int.random(in: 0...50))
let aMaxX: CGFloat = CGFloat(Int.random(in: 60...200))
let aMaxY: CGFloat = CGFloat(Int.random(in: 60...200))
let aRect: CGRect = CGRect(minX: aMinX,
minY: aMinY,
maxX: aMaxX,
maxY: aMaxY)
print(aRect)