如何在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 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始
廣告