Это займет две произвольные точки и даст вам CGRect, который имеет их как противоположные углы.
CGRect r = CGRectMake(MIN(p1.x, p2.x),
MIN(p1.y, p2.y),
fabs(p1.x - p2.x),
fabs(p1.y - p2.y));
Меньшее значение x в сочетании с меньшим значением y всегда будет источником прямоугольника (первые два аргумента). Абсолютным значением разницы между значениями x будет ширина, а между значениями y высота.