chr*_*o16 22 iphone core-graphics cgpoint ios cgrect
如果有两种不同CGPoints
,我怎么能把它们变成一种CGRect
?
例:
CGPoint p1 = CGPointMake(0,10);
CGPoint p2 = CGPointMake(10,0);
Run Code Online (Sandbox Code Playgroud)
我该怎么把它变成一个CGRect
?
Ben*_*tto 50
这将需要两个任意点,并为您提供将它们作为对角的CGRect.
CGRect r = CGRectMake(MIN(p1.x, p2.x),
MIN(p1.y, p2.y),
fabs(p1.x - p2.x),
fabs(p1.y - p2.y));
Run Code Online (Sandbox Code Playgroud)
与较小y值配对的较小x值将始终是rect的起源(前两个参数).x值之间的差值的绝对值将是宽度,y值之间的差值的绝对值将是高度.
肯的回答略有修改.让CGGeometry为你"标准化"矩形.
CGRect rect = CGRectStandardize(CGRectMake(p1.x, p1.y, p2.x - p1.x, p2.y - p1.y));
快速扩展:
extension CGRect {
init(p1: CGPoint, p2: CGPoint) {
self.init(x: min(p1.x, p2.x),
y: min(p1.y, p2.y),
width: abs(p1.x - p2.x),
height: abs(p1.y - p2.y))
}
}
Run Code Online (Sandbox Code Playgroud)