【问题标题】:Merging two UIImageViews of different sizes合并两个不同大小的 UIImageView
【发布时间】:2017-04-19 23:55:52
【问题描述】:

我正在制作一个 iOS 应用程序,用户应该能够将一个图像覆盖在另一个图像上。用户可以选择一个背景图像,该图像将存储在一个名为 imageView 的 UIImageView 中。然后,用户可以决定要覆盖在该图像之上的图像,该图像将存储在名为 imageTwo 的 UIImageView 中。然后,允许用户移动和调整 imageTwo 的大小。但是,我希望能够将这些图像视图合并到一个图像中并下载它。

我目前正在使用以下功能尝试下载图片:

@IBAction func downloadImage(_ sender: Any) {
let bottomImage:UIImage = imageView.image!
let topImage:UIImage = imageTwo.image!

let mySize = CGSize(width: (imageView.frame.size.width), height:(imageView.frame.size.height))

UIGraphicsBeginImageContextWithOptions(mySize, false, 1)
bottomImage.draw(in: CGRect(x: 0,y:0,width: mySize.width,height: mySize.height))
topImage.draw(in: CGRect(x: imageTwo.frame.origin.x ,y: imageTwo.frame.origin.y , width: (imageTwo.frame.size.width),height:(imageTwo.frame.size.height)), blendMode:CGBlendMode.normal, alpha:1.0)
let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIImageWriteToSavedPhotosAlbum(newImage, nil,nil,nil)
UIGraphicsEndImageContext()
}

但是,它并不能很好地工作。 这是图像在我的应用程序中的外观: Image viewed from app

但是,当我使用上面的函数下载图像时,背景图像看起来被拉伸并且 topImage/bird 不在正确的位置:Downloaded image

对于完成此任务的更简单方法或我应该如何从上面更改我的代码,有人有任何建议吗?我在这里读到有人建议将 UIImageViews 放入他们自己的视图中,但事实证明这也很棘手......

【问题讨论】:

    标签: ios swift merge uiimageview uigraphicscontext


    【解决方案1】:

    问题在于您正在合成支持您的图像视图的图像,这些图像与您的图像视图实际显示的内容不同。您可以应用必要的转换以使图像与图像视图中显示的内容相匹配,或者您可以偷懒,只捕获屏幕上的图像snapshotView(afterScreenUpdates:)

    【讨论】:

      猜你喜欢
      • 2013-02-03
      • 2019-09-23
      • 2012-03-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 2016-05-27
      相关资源
      最近更新 更多