【问题标题】:Need for a uiview but I have only a var of type some view需要一个 uiview 但我只有一些视图类型的 var
【发布时间】:2021-07-27 10:50:22
【问题描述】:

我有一个变量“meme”,其中包含一个图像和两个文本字段:

var meme: some View {
        image!
            .resizable()
            .aspectRatio(contentMode: .fit)
            .frame(width: UIScreen.main.bounds.size.width)
            .overlay(
                TextField("TOP", text: $topText)
                    .foregroundColor(.white)
                    .font(Font.custom("HelveticaNeue-CondensedBlack", size: 30))
                    .frame(width: UIScreen.main.bounds.size.width * 0.75)
                    .multilineTextAlignment(.center)
                    .padding(.vertical, 50.0)
                    .onTapGesture {
                        topText = ""
                    },
                alignment: .top
            )
            .overlay(
                TextField("BOTTOM", text: $bottomText)
                    .foregroundColor(.white)
                    .font(Font.custom("HelveticaNeue-CondensedBlack", size: 30))
                    .frame(width: UIScreen.main.bounds.size.width * 0.75)
                    .multilineTextAlignment(.center)
                    .padding(.vertical, 50.0)
                    .onTapGesture {
                        bottomText = ""
                    },
                alignment: .bottom
            )
    }

我想用我的所有图像和 textFields 给出的两个文本创建一个图像。为此,我使用了 UIGraphics 中的 draw 方法。而且,我只是swiftui的初学者。我在互联网上找到了一个代码,该人实现了一个从 uiview 创建图像的功能:

func createImage(from view: UIView) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(CGSize(width: view.frame.width, height: view.frame.height), true, 1)
        view.layer.render(in: UIGraphicsGetCurrentContext()!)
        let generatedImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return generatedImage!
    }

但就我而言,我有一个具有某种视图类型的变量。我试图创建一个新结构作为视图。但它仍然是一个视图,我怎样才能创建一个 UIView ?

编辑:我尝试了 Raja Kishan 通过写作提出的建议:

items.append(createImage(from: UIHostingController(rootView: meme).view))

在按钮的动作部分。

但是下面一行会抛出一个错误,说“致命错误:在展开可选值时意外发现 nil”:

view.layer.render(in: UIGraphicsGetCurrentContext()!)

在 createImage 函数中。

为什么是零?

【问题讨论】:

  • 你可以通过这个UIHostingController(rootView: yourSwiftUIView).view查看
  • 我有一个问题:它返回一个 nil 值。
  • 你必须为 meme 制作另一个结构视图 var ane 必须通过 struct view 而不是 var view。
  • 在同一行抛出同样的错误!

标签: swift swiftui uiview


【解决方案1】:

您可以使用 SWIFTUI 图片

Image(uiImage: createImage(from YOURVIEW))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 2013-10-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多