将两个CGPoints转换为CGRect

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值之间的差值的绝对值将是高度.


col*_*nta 9

肯的​​回答略有修改.让CGGeometry为你"标准化"矩形.

CGRect rect = CGRectStandardize(CGRectMake(p1.x, p1.y, p2.x - p1.x, p2.y - p1.y));


kel*_*lin 5

快速扩展:

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)