gpt4 book ai didi

ios - Swift - 创建屏幕上和屏幕外的 UITextView 内容图像

转载 作者:行者123 更新时间:2023-11-28 11:14:31 25 4
gpt4 key购买 nike

我有一个占据整个场景( View )的 UITextView。 textviews 的长度取决于内容的多少。它可能很长,因此不会全部显示在屏幕上——您必须滚动才能看到其余部分。此外,内容可以使用 NSTextAttachment 在其中包含图像。 我的目标是创建整个 TextView 的图像。它甚至应该包括屏幕外的内容(当前不可见)。这是我目前所拥有的:

func textViewImage() -> UIImage {

UIGraphicsBeginImageContext(textView.contentSize)

let savedContentOffset: CGPoint = textView.contentOffset
let savedFrame: CGRect = textView.frame

textView.contentOffset = CGPointZero
textView.frame = CGRectMake(0, 0, textView.contentSize.width, textView.contentSize.height)

textView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()

textView.contentOffset = savedContentOffset
textView.frame = savedFrame

UIGraphicsEndImageContext()

return image
}

这是行不通的。它只拍摄屏幕上当前可见的内容。我通过尝试通过短信或邮件分享它来检查这段代码是否有效:

 @IBAction func share(sender: UIBarButtonItem) {

let shareTextViewImage = textViewImage()
let activityController = UIActivityViewController(activityItems: [shareTextViewImage], applicationActivities: nil)

self.presentViewController(activityController, animated: true, completion: nil)

}

感谢这篇关于 SO 和其他人的帖子 Getting a screenshot of a UIScrollView, including offscreen parts .

期待一些帮助!谢谢!

更新 1:我创建了这个变量 var pageSize: CGSize = CGSizeMake(320, 800) 并尝试像这样添加它:UIGraphicsBeginImageContext(pageSize)。这也不起作用,因为它只拍摄当前屏幕截图。无论如何,这是一个固定大小,从长远来看是行不通的,因为内容大小可能会改变——只是想看看这会如何解决。

仍在寻找答案...

最佳答案

我自己想通了。这对我有用:

    func textViewImage() -> UIImage {

var image: UIImage? = nil

UIGraphicsBeginImageContextWithOptions(textView.contentSize, textView.opaque, 0.0)

let savedContentOffset: CGPoint = textView.contentOffset
let savedFrame: CGRect = textView.frame

textView.contentOffset = CGPointZero
textView.frame = CGRectMake(0, 0, textView.contentSize.width, textView.contentSize.height)

textView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
image = UIGraphicsGetImageFromCurrentImageContext()

textView.contentOffset = savedContentOffset
textView.frame = savedFrame

UIGraphicsEndImageContext()

return image!
}

如果你想分享这张图片:

    @IBAction func share(sender: UIBarButtonItem) {

let img = textViewImage()
let shareItem = [img]

let activityController = UIActivityViewController(activityItems: shareItem, applicationActivities: nil)
self.presentViewController(activityController, animated: true, completion: nil)

}

关于ios - Swift - 创建屏幕上和屏幕外的 UITextView 内容图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com