【Swift】【XCode】画面の特定の部分のスクリーンショットを取得する

目次

画面の特定の領域のスクリーンショットを取得する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//  スクリーンショットを撮影する
func takeScreenShot(view:UIView)->UIImage{
// 撮影領域を指定
let width = CGFloat(UIScreen.main.bounds.size.width)
let height = CGFloat(UIScreen.main.bounds.size.height / 1.3)
let size = CGSize(width: width, height: height)

// オフスクリーンバッファの作成
// Contextを作成してCurrentContextに設定(実際には先頭に配置)
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)

// 設定したCurrentContextを取得
let context = UIGraphicsGetCurrentContext()

// コンテキスト内のユーザー座標系の原点を変更する
context?.translateBy(x: 0, y: 100)

// view内のレイヤーとそのサブレイヤーを指定したコンテキストにレンダリングする
view.layer.render(in: context!)

// 現在のCurrentViewに画面のスナップショットをレンダリング
// self.view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)

// CurrentContextにレンダリングされている情報をUIImage型で取得する
let image = UIGraphicsGetImageFromCurrentImageContext()!

// CurrentContextの先頭を消去
UIGraphicsEndImageContext()

return image
}

使用例

1
2
3
//  スクリーンショットを撮影する
// self.viewはUIViewControllerで呼び出した場合に、紐付いている画面のスクリーンショットを撮る
let screenShotImage = takeScreenShot(view: self.view)

【Swift】【XCode】画面の特定の部分のスクリーンショットを取得する

https://blog.djima.net/2021/08/11/【Swift】【XCode】画面の特定の部分のスクリーンショットを取得する/

Author

Daiki Iijima

Posted on

2021-08-11

Updated on

2024-04-17

Licensed under