如何在iOS上以编程方式截屏?


在这篇文章中,我们将学习如何在iOS中以编程方式截屏。

我们将添加一个文本字段,在其中更改值,通过按下一个按钮进行截屏,然后将截屏显示在我们将在按钮正下方放置的ImageView中。

请记住,您可以将此功能添加到长按或任何其他手势上,甚至可以保存图像。但现在我们将只关注捕获屏幕截图并在图像视图中显示它。

让我们开始吧

步骤 1 − 打开 Xcode → 新建项目 → 单视图应用程序 → 我们将其命名为“TakeScreenShot”

步骤 2 − 打开 Main.storyboard,添加一个 UITextField、一个按钮和一个 UIImageView,如下所示

步骤 3 − 为图像视图附加一个 @IBOutlet。将其命名为 snapShotImageView。这是我们将显示捕获的屏幕截图的图像视图。

步骤 4 − 为“Take Snap Shot”按钮的 touchUpInside 添加一个 @IBAction。将函数命名为 takeSnapShotClicked。

步骤 5 − 在 ViewController 类的 viewDidLoad 中,设置图像视图的边框颜色和宽度,以将其与视图的其他部分区分开来。

self.snapShotImageView.layer.borderColor = UIColor.red.cgColor
self.snapShotImageView.layer.borderWidth = 2.0

步骤 6 − 我们将使用以下方法来捕获屏幕截图。

  • 启动图形上下文。
  • 将当前上下文捕获到变量中。
  • 在上下文变量中,渲染当前视图的图层。
  • 从上下文变量获取图像。请注意,此时上下文将包含当前视图中可用内容的屏幕截图。
  • 我们将从上下文将捕获的图像设置为我们的 imageView
  • 结束图形上下文

我们将在 takeSnapShotClicked 方法中执行上述所有操作。现在它看起来像这样

@IBAction func takeSnapShotClicked(_ sender: Any) {
   UIGraphicsBeginImageContextWithOptions(self.view.layer.frame.size, false, UIScreen.main.scale);
   guard let context = UIGraphicsGetCurrentContext() else {return }
   self.view.layer.render(in:context)
   self.snapShotImageView.image = UIGraphicsGetImageFromCurrentImageContext()
   UIGraphicsEndImageContext()
}

步骤 7 − 构建并运行项目。单击截屏按钮。您应该在底部的图像视图中看到屏幕截图。

更新于:2019年9月11日

930 次浏览

启动你的职业生涯

完成课程获得认证

开始
广告