Ios ui图像变换/缩放问题
最后,我有理由问一些问题,而不是在堆积如山的无尽喜悦中寻找答案 以下是我的情况:我有一个UIImageView,里面有一个UIImage。我正在通过CGAffineTranforms变换整个UIImageView,以按高度缩放并保持特定角度。 我通过两个CG点给它输入这个变换数据,所以它基本上只是计算这两个点之间的角度和比例,然后进行变换 现在,变换工作起来很有魅力,但我最近遇到了UIImage方法ResizeableImageWithCapinsets,如果手动设置图像的帧(即使用帧进行缩放),该方法效果很好,但使用变换似乎会覆盖这一点,我想这是意料之中的事情,因为它是核心图形做的事情 我的问题是,我将如何进行a)在变换图像后添加cap插图,或b)通过帧进行角度和缩放? 请注意,提供数据的两个点是接触点,因此它们可能会有很大的不同,这就是为什么在特定角度创建缩放矩形最为棘手的原因 为了让代码饥渴的天才们高兴,这里有一段我目前处理缩放的方式(创建UIImage时只做cap插入):Ios ui图像变换/缩放问题,ios,uiimageview,uiimage,cgaffinetransform,Ios,Uiimageview,Uiimage,Cgaffinetransform,最后,我有理由问一些问题,而不是在堆积如山的无尽喜悦中寻找答案 以下是我的情况:我有一个UIImageView,里面有一个UIImage。我正在通过CGAffineTranforms变换整个UIImageView,以按高度缩放并保持特定角度。 我通过两个CG点给它输入这个变换数据,所以它基本上只是计算这两个点之间的角度和比例,然后进行变换 现在,变换工作起来很有魅力,但我最近遇到了UIImage方法ResizeableImageWithCapinsets,如果手动设置图像的帧(即使用帧进行缩放)
为这个问题添加一个恰当的答案。这个问题的答案是可以找到的。我可能误解了你的意思,但似乎你只是想保持给定高度的纵横比?或多或少,是的。我只在一个轴上缩放图像,但我需要该轴顶部和底部的特定像素保持其原始大小(就像使用cap插图),同时拉伸图像的中间部分。也许您可以尝试使用UIImageView的内置纵横比功能和UIImage的ResizeableImageWithCapinsets设置。我尝试过,但问题似乎出在CGAffineTransform上。它完全忽略了CapInsets的ResizeableImageWithCapInsets,这就是我在这里发布的原因,因为我以前没有看到过这样的问题。这里可以看到正确的解决方案:
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;