【问题标题】:UIView to to Image when I press button当我按下按钮时 UIView 到图像
【发布时间】:2020-11-14 14:25:11
【问题描述】:

我是新手,我正在练习。我有一个带有 3 个 imageView 的应用程序(创建头像应用程序)。我希望当我按下按钮时,使用 3 个自定义图像视图保存图像。我的代码如下:

    @IBAction func saveImageMen (_ sender: Any) {
           
    
            
           }
   extension UIView{
         func createTransparentImage () -> UIImage {
             let renderFormat = UIGraphicsImageRendererFormat.default ()
             renderFormat.opaque = false
             self.isOpaque = false
             self.layer.isOpaque = true
             self.backgroundColor = UIColor.clear
             self.layer.backgroundColor = UIColor.clear.cgColor
             let renderer = UIGraphicsImageRenderer (size: bounds.size, format: renderFormat)
             return renderer.image {
                 (context) in
                 layer.render (in: context.cgContext)
             }
         }
    }

当按钮被按下时我不知道如何运行这个扩展

【问题讨论】:

  • 您要保存哪个视图?
  • 当我按下保存按钮时,我想保存一个具有 3 个图像视图的 UIView

标签: ios swift swift5


【解决方案1】:

所以它是 UIView 类的扩展,您可以使用该类的实例调用函数,因此您可以这样做:

UIView().createTransparentImage()

这将返回图像,以便像上面那样使用它:

let image  = UIView().createTransparentImage()

【讨论】:

  • 但这对我不起作用。 “'createTransparentImage()' 的重新声明无效”我有这样的代码。 code @IBAction func SaveImage (_ sender: Any) { parentViewImage.createTransparentImage() //parentViewImage 是我想要捕获的视图 } } extension UIView{ func createTransparentImage () -> UIImage { let renderFormat = UIGraphicsImageRendererFormat.default () ...code
  • 确保您只在任何类范围之外创建了一次扩展
【解决方案2】:

由于您要渲染图像,您可以为 UIImageView 创建扩展,因为它是从下面的 UIView 派生的,这将在单击按钮时渲染图像:

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var imageView: UIImageView!
   override func viewDidLoad() {
   super.viewDidLoad()
 }

@IBAction func renderImage(_ sender: Any) {
   imageView.createTransparentImage()
}

}

extension UIImageView {
 func createTransparentImage () {
     let renderFormat = UIGraphicsImageRendererFormat.default ()
     renderFormat.opaque = false
     self.isOpaque = false
     self.layer.isOpaque = true
     self.backgroundColor = UIColor.black
     self.layer.backgroundColor = UIColor.black.cgColor
     let renderer = UIGraphicsImageRenderer (size: bounds.size, format: renderFormat)
     self.image = renderer.image {
         (context) in
         layer.render (in: context.cgContext)
     }
 }
}

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 2013-06-06
    相关资源
    最近更新 更多