前提:我正在构建一个裁剪工具,可以处理图像的两指任意旋转以及任意裁剪。
有时图像最终会以插入空白空间以填充旋转图像和裁剪矩形之间的间隙的方式旋转(参见下面的示例)。
我需要确保图像视图在旋转时完全适合裁剪矩形。如果没有,我需要重新转换图像(缩放),使其适合裁剪范围。
使用这个答案,我实现了检查旋转的 UIImageView 是否与裁剪 CGRect 相交的能力,但不幸的是,这并不能告诉我裁剪矩形是否完全包含在旋转的 imageview 中。希望我可以对这个答案进行一些简单的修改?
OK的视觉示例:
不好,我需要检测和处理:
更新:不工作的方法
- (BOOL)rotatedView:(UIView*)rotatedView containsViewCompletely:(UIView*)containedView {
CGRect rotatedBounds = rotatedView.bounds;
CGPoint polyContainedView[4];
polyContainedView[0] = [containedView convertPoint:rotatedBounds.origin toView:rotatedView];
polyContainedView[1] = [containedView convertPoint:CGPointMake(rotatedBounds.origin.x + rotatedBounds.size.width, rotatedBounds.origin.y) toView:rotatedView];
polyContainedView[2] = [containedView convertPoint:CGPointMake(rotatedBounds.origin.x + rotatedBounds.size.width, rotatedBounds.origin.y + rotatedBounds.size.height) toView:rotatedView];
polyContainedView[3] = [containedView convertPoint:CGPointMake(rotatedBounds.origin.x, rotatedBounds.origin.y + rotatedBounds.size.height) toView:rotatedView];
if (CGRectContainsPoint(rotatedView.bounds, polyContainedView[0]) &&
CGRectContainsPoint(rotatedView.bounds, polyContainedView[1]) &&
CGRectContainsPoint(rotatedView.bounds, polyContainedView[2]) &&
CGRectContainsPoint(rotatedView.bounds, polyContainedView[3]))
return YES;
else
return NO;
}