###実現したいこと
画面中央のスクリーンショットを撮りたい。
###該当するコード
Swift
1 func takeScreenShot() { 2 3 let width = CGFloat(UIScreen.main.bounds.size.width) 4 let height = CGFloat(UIScreen.main.bounds.size.height/1.3) 5 let size = CGSize(width: width, height: height) 6 7 UIGraphicsBeginImageContextWithOptions(size, false, 0.0) 8 9 self.view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) 10 screenShotImage = UIGraphicsGetImageFromCurrentImageContext()! 11 UIGraphicsEndImageContext() 12 13 }
heightを1/1.3にして試してみたのですが、これだとスクショが上寄りになってしまうようです。同じ高さで画面の中央を撮ることは可能でしょうか?
###追記
更新したコード
Swift
1 func takeScreenShot() { 2 3 let size = CGSize(width: CGFloat(UIScreen.main.bounds.size.width), height: CGFloat(UIScreen.main.bounds.size.height/1.3)) 4 let rect = CGRect(origin: CGPoint.zero, size: size) 5 let height = UIScreen.main.bounds.size.height 6 // 上下の余白が同じサイズになる値を計算 7 let startWith = (height - (height/1.3)) / 2 8 if let context = UIGraphicsGetCurrentContext() { 9 context.translateBy(x: 0, y: -startWith) 10 context.fill(rect) 11 } 12 13 self.view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) 14 screenShotImage = UIImage(cgImage: (UIGraphicsGetCurrentContext()?.makeImage())!) 15 UIGraphicsEndImageContext() 16 }
エラーメッセージ
[Unknown process name] CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/14 11:26