2017-03-28 7 views
0

私は私のプロジェクトで部分的なスクリーンショットを作りたいと思います。 しかし、私は出力スクリーンショットをしようとした私はしたくない良いです。
ここに私のコードです。
Swiftの部分スクリーンショット3

let size = CGSize(width: 398, height: 300) 

    UIGraphicsBeginImageContextWithOptions(size, false, 0); 

    view.layer.render(in: UIGraphicsGetCurrentContext()!) 

    var sourceImage = UIGraphicsGetImageFromCurrentImageContext() 

    sourceImage?.draw(at: CGPoint(x: 0, y: 0)) 

    var cropimage = UIGraphicsGetImageFromCurrentImageContext() 


    UIGraphicsEndImageContext() 
    UIImageWriteToSavedPhotosAlbum(cropimage!,nil,nil,nil) 

enter image description here


私は白のみビューを保存したいと思います。幅と高さを設定すると、出力イメージは小さく、完全には取得されません。
誰でも助けてくれますか?

+0

私はあなたがグラフィックコンテキストの矩形を設定する必要が信じています。もう1つの方法は、完全なスクリーンショットを撮ってから画像をトリミングすることです。 Googleに試してみてください! – LinusGeffarth

+1

おそらく[ここ](http://stackoverflow.com/questions/2214957/how-do-i-take-a-screen-shot-of-a-uiview)の答えがあなたを助けることができます。特定のサブビュー、作物を必要としない – Tj3n

+0

あなたのフィードバックとアドバイス@ Tj3nに感謝します。 –

答えて

1

のUIViewを拡張し、その白ビューの画像をキャプチャ

// Untested 
import UIKit 

extension UIView { 

    func capture() -> UIImage { 

    UIGraphicsBeginImageContextWithOptions(self.frame.size, self.opaque, UIScreen.mainScreen().scale) 
    self.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return image 
    } 

} 

用法:

let whiteImage = myWhiteView.capture() 
+0

Broこれを書いて、photoGalleryに画像を保存します。 UIImageWriteToSavedPhotosAlbum(cropimage!、nil、nil、nil)しかし、ギャラリーの画像を見ると、白い部分が小さく、黒い画面が右側に表示されます。なぜこれは仲間になるのですか?あなたの助けを借りてくれてありがとう。 –

+0

キャプチャしているビューが白いビューであり、スーパービューではないことを確認してください。 – Damo

+0

こんにちは@Damo、私は白いビューにUIViewコンセントを作った。次に、あなたのコードを書いています。私はvarを宣言しますwhiteViewImage:UIImage! viewDidLoad()内でこのwhiteViewImage = qrView.capture()を宣言します。ユーザーがボタンをクリックすると写真保存機能を書いています。私は白いビューの幅を定義しませんでした。ホワイトビューの高さのみを設定します。 –

関連する問題