检查CGRect是否包含在另一个(已转换的)矩形中

我正在实现裁剪function,并试图弄清楚如何testing裁剪矩形是否完全包含在转换后的图像视图中。 即在图像的裁剪部分中不应该有空格。

我试图复制在这个组件中实现的行为: https : //github.com/heitorfr/ios-image-editor ,它实现了类似的检查(见下文),但我不能得到它的工作我的情况。

- (void)checkBoundsWithTransform:(CGAffineTransform)transform { CGRect r1 = [self boundingBoxForRect:self.preview.cropRect rotatedByRadians:[self imageRotation]]; Rectangle r2 = [self applyTransform:transform toRect:self.preview.initialImageFrame]; CGAffineTransform t = CGAffineTransformMakeTranslation(CGRectGetMidX(self.preview.cropRect), CGRectGetMidY(self.preview.cropRect)); t = CGAffineTransformRotate(t, -[self imageRotation]); t = CGAffineTransformTranslate(t, -CGRectGetMidX(self.preview.cropRect), - CGRectGetMidY(self.preview.cropRect)); Rectangle r3 = [self applyTransform:t toRectangle:r2]; if(CGRectContainsRect([self CGRectFromRectangle:r3],r1)) { self.validTransform = transform; } } 

不是最高性能的解决scheme,但非常快速和肮脏。

 NSBezierPath *path = [NSBezierPath bezierPathWithRect:r2]; [path transformUsingAffineTransform:t]; if([path containsPoint:NSMinX(r1)] && [path containsPoint:NSMinY(r1)] && [path containsPoint:NSMaxX(r1)] && [path containsPoint:(NSMaxY(r1)] ){ self.validTransform = transform; }