Swift 将用户填写的UITextView与CGRect叠加在图像上,与合并两个图像不同吗?

Swift 将用户填写的UITextView与CGRect叠加在图像上,与合并两个图像不同吗?,swift,swift3,Swift,Swift3,我一直在使用此函数使用CG rect将两个图像组合在一起: let renderer = UIGraphicsImageRenderer(size: CGSize(width: frame.bounds.size.width, height: frame.bounds.size.height)) img = renderer.image { ctx in let someSize = CGSize(width: imageView.bounds.s

我一直在使用此函数使用CG rect将两个图像组合在一起:

 let renderer = UIGraphicsImageRenderer(size: CGSize(width: frame.bounds.size.width, height: frame.bounds.size.height))

        img = renderer.image { ctx in


            let someSize = CGSize(width: imageView.bounds.size.width, height: imageView.bounds.size.height)



            currentImage.scaleImageToSize(newSize: someSize).draw(in: CGRect(x: 0, y: 35, width: frame.bounds.size.width, height: imageView.bounds.size.height))



            //textView?.draw(CGRect(x: 0, y: 0, width: textView.bounds.size.width, height: textView.bounds.size.height))


            frames = UIImage(named: framesAr)
            frames?.draw(in: CGRect(x: 0, y: 0, width: frame.bounds.size.width, height: frame.bounds.size.height))

        }
我使用这个CGRect函数将currentImage(UIImage)和frame(UIImage)组合成一个UIImage没有问题,但是我尝试以相同的方式添加文本视图似乎不起作用

出于测试目的,我在图像前面有一个UITextView。我希望能够在textView中键入文本,并在上述函数中使用注释掉的行来绘制整个textView及其内容

保存图像时,函数将运行,但textView将被忽略。谷歌搜索会产生如何向图像添加字符串的结果,但不会以这种方式生成用户可填充的文本视图


任何帮助都将不胜感激

我找到了一种可行的方法,但它更像是一种变通方法

像ichamps一样设置文本视图回答以下问题:

然后将textview的内容打印到图像上,如下所示:

     let paragraphStyle = NSMutableParagraphStyle()
            paragraphStyle.alignment = .left

            let attrs = [NSFontAttributeName: UIFont(name: "Avenir book", size: 14)!, NSParagraphStyleAttributeName: paragraphStyle]



            let string = "\(myString)"
            string.draw(with: CGRect(x: 0, y: 0, width: frame.bounds.size.width, height: frame.bounds.size.height), options: .usesLineFragmentOrigin, attributes: attrs, context: nil)

我找到了一种可行的方法,但它更像是一种变通方法

像ichamps一样设置文本视图回答以下问题:

然后将textview的内容打印到图像上,如下所示:

     let paragraphStyle = NSMutableParagraphStyle()
            paragraphStyle.alignment = .left

            let attrs = [NSFontAttributeName: UIFont(name: "Avenir book", size: 14)!, NSParagraphStyleAttributeName: paragraphStyle]



            let string = "\(myString)"
            string.draw(with: CGRect(x: 0, y: 0, width: frame.bounds.size.width, height: frame.bounds.size.height), options: .usesLineFragmentOrigin, attributes: attrs, context: nil)

我从来没见过这种东西有用——但这不是什么新鲜事!一个想法。。。你正在用CG在UIView中绘制,对吗?但不能简单地“绘制”UITextView,因为它是一个视图。您是否已将其作为子视图添加到此UIView?我对swift还是比较新的,我不确定将UITextView作为子视图添加到此UIView是什么意思。我在IB中添加了textview,并在IB中设置了它的约束。这就是我的意思。将其添加到IB中可以推断它是主视图的子视图。你的代码。。。(1) 它可以工作,因为它使用CG在我们称之为“主”视图中绘制图像。(2) 理解您所做的只是在一个CGRect中“绘制”,它不是任何类型的子视图-因此,不需要约束,因为它是具有约束的主视图-您看到的问题到底是什么(嗯,或者不是)?你的文本视图根本不存在吗?这不是你想要的地方吗?我想你是在结合使用自动布局和不使用的东西。当上述函数运行且“textview”行未注释时,我根本看不到textview。再来一条注释。你在这里做两件事。首先,您正在一个视图(主视图)内进行CG绘图,该视图使用自动布局进行约束。此主视图存在于包含此textView的视图层次结构中,所有视图也应定义此textView的约束。(考虑这一点:您在IB中同时看到主视图和文本视图,但在那里您既看不到图像,也看不到图像视图,对吗?)。这与以任何方式将其添加到视图层次结构都是完全不同的。我从未见过这种方式有效-但这并不是什么新鲜事!一个想法。。。你正在用CG在UIView中绘制,对吗?但不能简单地“绘制”UITextView,因为它是一个视图。您是否已将其作为子视图添加到此UIView?我对swift还是比较新的,我不确定将UITextView作为子视图添加到此UIView是什么意思。我在IB中添加了textview,并在IB中设置了它的约束。这就是我的意思。将其添加到IB中可以推断它是主视图的子视图。你的代码。。。(1) 它可以工作,因为它使用CG在我们称之为“主”视图中绘制图像。(2) 理解您所做的只是在一个CGRect中“绘制”,它不是任何类型的子视图-因此,不需要约束,因为它是具有约束的主视图-您看到的问题到底是什么(嗯,或者不是)?你的文本视图根本不存在吗?这不是你想要的地方吗?我想你是在结合使用自动布局和不使用的东西。当上述函数运行且“textview”行未注释时,我根本看不到textview。再来一条注释。你在这里做两件事。首先,您正在一个视图(主视图)内进行CG绘图,该视图使用自动布局进行约束。此主视图存在于包含此textView的视图层次结构中,所有视图也应定义此textView的约束。(考虑这一点:您在IB中同时看到主视图和文本视图,但在那里您既看不到图像,也看不到图像视图,对吗?)。这与以任何方式将其添加到视图层次结构完全不同。