質問
今範囲を指定して画面のスクショをとるプログラムが必要なのでそちらに取り組んでいるのですが質問です。単に画面のスクショを撮るには以下のコードだけで大丈夫なのですが、
引用:https://qiita.com/uhooi/items/d8cad35ad95398d44b45
swift
1import UIKit 2 3/// UIView拡張(イメージ) 4public extension UIView { 5 6 // MARK: Public Methods 7 8 /// ビュー→イメージに変換する 9 /// 10 /// サブビューもイメージ化される 11 /// 12 /// - Returns: 対象ビューのイメージ 13 public func toImage() -> UIImage { 14 UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, 0.0) 15 guard let context = UIGraphicsGetCurrentContext() else { 16 print("現在のコンテキストを取得できませんでした。") 17 return UIImage() 18 } 19 20 self.layer.render(in: context) 21 22 guard let image = UIGraphicsGetImageFromCurrentImageContext() else { 23 print("ビューをイメージに変換できませんでした。") 24 return UIImage() 25 } 26 27 UIGraphicsEndImageContext() 28 29 return image 30 } 31 32} 33
上記のコードでは画面の全体のスクショになってしまいます(それが本来の使い方であることはわかっています)
その理由としては
swift
1UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, 0.0)
で型がCGPSizeであるself.bounds.sizeを引数として渡しているからなのですが、ここでCGRectを渡してスクショをする画面上の位置とサイズを指定する方法はないでしょうか。
もし解決方法をご存知でしたらご教示いただけたら幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/06 03:47