【问题标题】:how to overlay an image over an image in xcode?如何在xcode中的图像上叠加图像?
【发布时间】:2016-01-09 05:47:15
【问题描述】:

我正在尝试制作一个应用程序,用户可以在其中从他们的图片库中选择一张将用作背景的图片,然后是他们的徽标,他们也可以从他们的(照片)库中选择...

目前我还没有找到可以帮助我的教程,主要是因为用户必须能够设置自己的图像而不是默认图像。 另外,你们中的任何人是否也知道我如何拥有多个 UIImagePickerControllers,因为这段代码会同时影响两个图像而不是每个选择器一个?

我使用/拥有什么:
我用 swift
我使用 xcode 7.0.1
这是 the storyboard i currently use.

我的快速文件:

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

  @IBOutlet weak var logo: UIImageView!
  @IBOutlet weak var bgimg: UIImageView!

  override func viewDidLoad() {
    super.viewDidLoad()
  }

  @IBAction func selectbg(sender: AnyObject) {
    let bgPicker = UIImagePickerController()
    bgPicker.delegate = self
    bgPicker.sourceType = .PhotoLibrary
    self.presentViewController(bgPicker, animated: true, completion: nil)
  }

  @IBAction func selectlogo(sender: AnyObject) {
    let logoPicker = UIImagePickerController()
    logoPicker.delegate = self
    logoPicker.sourceType = .PhotoLibrary
    self.presentViewController(logoPicker, animated: true, completion: nil)
  }

  func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
    logo.image = image
    bgimg.image = image
    self.dismissViewControllerAnimated(false, completion: nil)
  }


  @IBAction func addImage(sender: AnyObject) {

    let ActionAlert = UIAlertController(title: nil, message: "What image do you want to add/edit?", preferredStyle: .ActionSheet)

    let bgimage = UIAlertAction(title: "Background", style: .Default, handler: { (Alert:UIAlertAction!) -> Void in
        print("Edit background image")
    })
    let logo = UIAlertAction(title: "Logo", style: .Default) { (Alert:UIAlertAction!) -> Void in
        print("Edit logo")
    }
    let cancel = UIAlertAction(title: "Cancel", style: .Cancel) { (Alert:UIAlertAction!) -> Void in
        print("remove menu")
    }

    ActionAlert.addAction(bgimage)
    ActionAlert.addAction(logo)
    ActionAlert.addAction(cancel)

    self.presentViewController(ActionAlert, animated: true, completion: nil)
}

}

如果我不清楚我的问题,请随时询问更多信息

【问题讨论】:

    标签: ios image swift overlay photolibrary


    【解决方案1】:

    为每个图像创建两个 UIImageView,并将前景的一个作为子视图添加到父级。

    类似这样的:

    let bgimg = UIImage(named: "image-name") // The image used as a background
    let bgimgview = UIImageView(image: bgimg) // Create the view holding the image
    bgimgview.frame = CGRect(x: 0, y: 0, width: 500, height: 500) // The size of the background image
    
    let frontimg = UIImage(named: "front-image") // The image in the foreground
    let frontimgview = UIImageView(image: frontimg) // Create the view holding the image
    frontimgview.frame = CGRect(x: 150, y: 300, width: 50, height: 50) // The size and position of the front image
    
    bgimgview.addSubview(frontimgview) // Add the front image on top of the background
    

    【讨论】:

    • 美丽。谢谢你的回答!
    【解决方案2】:

    这是将页脚图像合并到原始图像的示例代码

    extension UIImage{
        func merge(mergewith:UIImage) -> UIImage {
            
            UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
            let actualArea = CGRect(x: 0, y: 0, width: size.width, height: size.height)
            let mergeArea = CGRect(x: 0, y: size.height - mergewith.size.height, width: size.width, height: mergewith.size.height)
            self.draw(in: actualArea)
            mergewith.draw(in: mergeArea)
            let merged = UIGraphicsGetImageFromCurrentImageContext()!
            UIGraphicsEndImageContext()
            return merged
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多