1

最后,我有理由问一些问题,而不是在 Stack Overflow 上寻找无尽的乐趣。

这是我的情况:我有一个UIImageView ,里面有一个UIImage 。我正在通过CGAffineTranforms转换整个UIImageView,以按高度缩放并将其保持在特定角度。我通过两个 CGPoints 向它提供这个变换数据,所以它本质上只是计算这两个点之间的角度和比例并进行变换。

现在,转换就像一个魅力,但我最近遇到了UIImage方法resizableImageWithCapInsets,如果您手动设置图像的框架(即使用框架缩放),它就可以正常工作,但似乎使用转换会覆盖这个,我想这是可以预料的,因为它是Core Graphics做的事情。

我的问题是,我将如何处理 a) 在转换图像后添加 cap insets 或 b) 通过框架进行角度和缩放?

请注意,提供数据的两个点是接触点,因此它们可能会有很大差异,这就是为什么以特定角度创建缩放矩形充其量是棘手的。

为了让您对代码饥渴的天才们感到高兴,这是我处理缩放的当前方式的片段(仅在创建 UIImage 时进行上限插入):

float xDiff = (PointB.x - PointA.x) / 2;
float yDiff = (PointB.y - PointA.y) / 2;

float angle = [self getRotatingAngle:PointA secondPoint:PointB];

CGPoint pDiff = CGPointMake(PointA.x + xDiff, PointA.y + yDiff);

self.center = pDiff;

// Setup a new transform
// Set it up with a scale and an angle
double distance = sqrt(pow((PointB.x - PointA.x), 2.0) + pow((PointB.y - PointA.y), 2.0));
float scale = 1.0 * (distance / self.image.size.height);
CGAffineTransform transformer = self.transform;
transformer = CGAffineTransformConcat(CGAffineTransformMakeScale(1.0, scale), CGAffineTransformMakeRotation(angle));

// Apply the transformer
self.transform = transformer;
4

1 回答 1

0

对此添加正确的答案。问题的答案可以在这里找到。

于 2013-12-01T21:42:06.270 回答