0

我有一个UIImage具有透明背景的。旋转此图像时,我想找到图形周围的边界框(即非透明部分,如果将​​其旋转 a UIImageView,它将找到整个UIImage包括透明部分的边界框)。

是否有可以为我执行此操作的 Apple 库?如果没有,有谁知道如何做到这一点?

4

1 回答 1

1

如果我正确理解了您的问题,您可以检索 uiimageview 的框架(而不是边界),然后获取各个 cgpoints 并显式转换这些点以获得转换后的矩形。因为在 Apple 的文档中它说: 您可以通过调用函数 CGRectApplyAffineTransform 对 CGRect 结构进行操作。此函数返回包含传递给它的矩形的转换角点的最小矩形。逐个转换点应避免这种自动更正行为。

CGRect originalFrame = UIImageView.frame;
CGPoint p1 = originalFrame.origin;
CGPoint p2 = p1; p2.x += originalFrame.width;
CGPoint p3 = p1; p3.y += originalFrame.height;

//Use the same transformation that you applied to uiimageview here
CGPoint transformedP1 = CGPointApplyAffineTransform(p1, transform);
CGPoint transformedP2 = CGPointApplyAffineTransform(p2, transform);
CGPoint transformedP3 = CGPointApplyAffineTransform(p3, transform);

现在您应该能够从这 3 个点定义一个新矩形(第 4 个是可选的,因为可以从 3 个点计算宽度和高度。需要注意的一点是,您不能将这个新矩形存储在 cgrect 中,因为 cgrect 由一个原点和一个大小,所以它的边缘总是平行于 x 和 y 轴。苹果的 cgrect 定义不允许存储旋转的矩形。

于 2013-01-27T22:38:54.577 回答