2016-08-27 5 views
0

これを行う方法については、いくつかの他のStack Overflowの回答を見てきました。彼らはかなりうまく動作し、私はカメラロールにそれらを保存するためのコードを追加しました。この質問の最後にコードを追加しました。UIViewをレンダリングバーやツールバーなどを使用せずにUIImageにレンダリングする方法

このコードは、UIViewに添付されたカスタムUIViewクラスの内部にあります。ユーザーはそのUIViewの内部にイメージを描画して保存します。しかし、保存機能を使用すると、ナビゲーションバーと他のUIImagesの束が画像に保存されます。私はそれを望んでいません。私は、それは、全体のビューではなく、そのUIView上のものを保存するだけです。

私はここで、述べたようにコードがある:

func downloadImage() { 
     UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.isOpaque, 0.0) 
     self.layer.render(in: UIGraphicsGetCurrentContext()!) 
     let img = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     UIImageWriteToSavedPhotosAlbum(img!, nil, nil, nil) 
    } 

編集:私はなぜ考え出しました。 Interface Builderでは、追加の要素はすべて、私が画像を保存していたビューの子であった。私の愚かなミスから学び、それをしないでください:)

答えて

0

view.layer.renderでビューをレンダリングすると、そのビューのレイヤーとそのサブビューのレイヤーがレンダリングされます。

ナビゲーションバーなど必要でないものがある場合は、他のビューが含まれている親ビューにメッセージを送信する必要があります。 (ビューコントローラのコンテンツビューのように)

特定のビューのみをレンダリングする場合は、キャプチャしたいコンテンツの誰のビューにメッセージview.layer.renderを送信します。

関連する問題