相对缩放 UIImageView

Posted

技术标签:

【中文标题】相对缩放 UIImageView【英文标题】:Scale UIImageView relatively 【发布时间】:2011-04-14 12:50:58 【问题描述】:

我有两个 UIImageViews,我已经设法合并并保存它们。但我希望叠加图像能够相对于所选图像的比例进行缩放和定位。让你在屏幕上看到的 UIImageView 看起来和它保存的 UIImageView 一样。

- (UIImage *)combineImages

UIGraphicsBeginImageContext(CGSizeMake(theimageView.image.size.width,theimageView.image.size.height));

// Draw image1
[theimageView.image drawInRect:CGRectMake(0,0, theimageView.image.size.width,theimageView.image.size.height)];

// Draw image2
[Birdie.image drawInRect:CGRectMake(Birdie.center.x, Birdie.center.y, (theimageView.image.size.width / 2), (theimageView.image.size.height / 2))];

UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return resultingImage;

theImageView 和 Birdie 是两个 UIImageView。 提前致谢!

【问题讨论】:

请稍微清除一下。您是否希望具有与要添加新图像的 baseImageView 相同大小的 imageView?假设一个(baseImageView) 的宽度为 20,另一个为 10。加起来是 30,但你想在 20 中显示它。是这样吗? 我有两个UIImageViews,第一个像背景。你必须自己选择。这个可以是各种尺寸。第二个 UIImageView 只是一个固定大小的标准图像。您可以将第二个移到屏幕上,它会覆盖背景。此图像显示在 UIImageView 中,但按比例缩小以适合屏幕。您可以将第二个图像拖到它上面,我希望保存的图像具有背景的大小(已选择),并且第二个图像与视图位于同一位置。听起来很复杂,但它就像一些“美发”应用等。 【参考方案1】:

请试试这个,

  - (UIImage *)combineImages



    // Draw image1
    [theimageView.image drawInRect:CGRectMake(0,0, theimageView.image.size.width,theimageView.image.size.height)];

    // Draw image2
    [Birdie.image drawInRect:CGRectMake(Birdie.frame.origin.x, Birdie.frame.origin.y, Birdie.frame.size.width, Birdie.frame.size.height)];
    //have you added Birdie over theimageView if not than do this. If your size is already set as you want then there is no need for above two lines of drawInRect.
    UIGraphicsBeginImageContext(theimageView.bounds.size);
    [theimageView.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return resultingImage;
    

谢谢,

【讨论】:

感谢您的回答,但是当我保存图像时,它的大小与选择的原始 UIImageView (theimageView) 的大小不同,并且未添加来自 Birdie 的第二个选择的图像.提前致谢! 蒂姆,你在哪里添加小鸟?在 originalImageview 或 self.view 上?在我看来,您应该将 Birdie 放在 originalImageview 上,这样您就不需要前两行 drawRect:。如果你看到我在那里评论了一些东西。请回答并尝试这种方法。 originalImageview 或 self.view 是什么意思?对不起,我是个菜鸟,所以我不明白整个事情。你的意思是我把小鸟放在界面构建器中的什么地方,还是..?提前致谢! 我的问题是哪个视图是小鸟的超级视图?请在 xib 中查看也请尝试评论前两行代码(我们在其中调用 drawRect 方法。 据我所知,它没有超级视图,我不知道在 de xib 中哪里可以找到它。如果我将 .h 和 .m 中的整个代码发送给您会更容易吗?或者也许是来自 xib 的图像?我有几个按钮,每个按钮都会调用 UIImageView 上另一个名为 Birdie 的图像。这个 UIImageView 覆盖了 imageView,我希望保存的图像与屏幕匹配。提前致谢。

以上是关于相对缩放 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

缩放时保持 UIButton 相对

如何相对缩放用户控件的大小?

缩放和翻译后如何获得相对于画布的触摸坐标?

Android图像相对于中心点的缩放动画

如何相对缩放用户控件的大小?

相对于鼠标位置从其中心缩放图像