【问题标题】:Take screenshot of visible area of UIScrollView截取 UIScrollView 可见区域的截图
【发布时间】:2019-07-26 18:32:28
【问题描述】:

我有一个 UIScrollView 作为视图控制器主视图的子视图。我正在尝试仅保存 UIScrollView 框架中可见的任何内容的屏幕截图。

UIGraphicsBeginImageContextWithOptions(imageScrollView.bounds.size, false, UIScreen.main.scale) 让上下文 = UIGraphicsGetCurrentContext() context?.translateBy(x: 0, y: 0)

    view.layer.render(in: context!)
    let visibleScrollViewImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()


    let popupImageView = UIImageView(image: visibleScrollViewImage)
    popupImageView.layer.borderColor = UIColor.white.cgColor
    popupImageView.layer.borderWidth = 4
    popupImageView.frame = CGRect(origin: CGPoint(x: 0, y: 400), size: CGSize(width: 400, height: 400))

    imageScrollView.removeFromSuperview()

    view.addSubview(popupImageView)

带有 popupImageView 的部分只是为了测试并查看实际保存的内容,似乎存在一些偏移问题,水平轴很好,但我似乎只得到了我想要的图像的前三分之一,并且上面只是黑暗的空间。

似乎这一定是一个非常简单的解决方案,但我已经搜索了所有类似的问题,但找不到答案。

谢谢大家!

【问题讨论】:

标签: swift uiscrollview screenshot


【解决方案1】:

试试下面的。如果我使用UITableView 控件进行操作,它可以工作。

import UIKit

class ViewController: UIViewController {
    @IBAction func snapTapped(_ sender: UIButton) {
        UIGraphicsBeginImageContextWithOptions(imageScrollView.bounds.size, true, 1.0)
        imageScrollView.drawHierarchy(in: CGRect(origin: CGPoint.zero, size: imageScrollView.bounds.size), afterScreenUpdates: true)
        if let image = UIGraphicsGetImageFromCurrentImageContext() {
            UIGraphicsEndImageContext()
            myImageView.image = image
        }
    }
}

【讨论】:

  • 是的,我的英雄,你救了我!非常感谢
【解决方案2】:
func screenShotMethod()->UIImage
{
  let layer = self.imageScrollView.layer
  let scale = UIScreen.main.scale
  UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale);

  layer.render(in: UIGraphicsGetCurrentContext()!)
  let screenshot = UIGraphicsGetImageFromCurrentImageContext()
  UIGraphicsEndImageContext()

  return screenshot!
}

【讨论】:

  • 当我这样做时,我得到一个完全空白的图像。
  • 你是在点击按钮还是在屏幕加载时调用这个函数?
  • 点击按钮时,uiscrollview 有一个图像视图,我可以在滚动视图中缩放和移动,然后单击保存按钮以准确保存滚动视图中可见的内容
  • 你能分享一些代码来检查问题吗?或者首先尝试在视图中添加滚动视图并截取该视图的屏幕截图
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
相关资源
最近更新 更多