BOX音楽好きの組み込みソフトエンジニアによるプログラミング(主にiOSアプリ開発)の勉強の記録2018-01-19UIView(withアニメーション)からUIImageへの変換する時の注意点お疲れ様です。UIViewからUIImageへの変換って割とよく行う処理かと思います。今まで私は以下みたいなUIViewのExtensionペタッと貼り付けて、任意のタイミングで使用していました。}上記を機嫌よく使っていたのですが、以下のような問題が発生しました。アニメーションが入ったViewをキャプチャしたとき思てたんと違う今回、アニメーション付きのViewを内部で保持している親Viewをキャプチャーしようと思いました。アニメーションしているViewと瞬間の表示位置も正しく、です。結果は...どのタイミングでキャプチャーしてもアニメーションViewがずっとおんなじ場所じゃん!!なんで?ねぇ何で??コードを見直してみました。あることに気がつきました。UIGraphicsGetCurrentContext()!)ん??このコンテキストを取得している部分、対象ViewのCALayerに対してレンダリングしてるな...。この方法ってViewの座標位置を示すポイント値は変化せずにViewがアニメーションしているんですよね。コンテキストを取得した対象は対象ViewのCALayer...。一つの仮説が生まれました。viewが保持している座標位置に従ってコンテキストを取得している!上記が正しいのかどうかちゃんと調査してませんが、多分そんなに遠い憶測ではないと思っています。それはそうと、うーん、これは困りました...。アニメーションしているViewを任意のタイミングでキャプチャしたかったんです。(試してませんが、アニメーションをCABasicAnimationで行なった場合にはちゃんとアニメーションしている位置に従ってキャプチャできると思われます。そこでView側にて制限を加えたくなかったのです。)他の人の書いたUIView→UIImageのコードを眺めるじーっと眺めてみることにしました。その時間、約一時間くらい。解決策がないか探って見ました。すると、、、おんなじ様に見えていたコードが、よく見ると違うものが混じっていることに気づいてきました。解答に行き着いたのです。iOS7から追加されたメソッドの模様。リファレンスには以下の記載があります。context.なんかいけそうな感じがする!引数inには指定したViewのRectを入れるみたい。場合には正味そのViewのみのキャプチャを行い、view.boundsの場合には、内包されているviewも対象になるみたい。今回はview.boundsがいいですね。afterScreenUpdatesは対象のViewに変化があったかどうかを確認可能にするか否か(ややこしや)を指定するものみたいです。今回はfalseとしました。上記を考慮し、以下の様にUpdateしました。作成したアニメーションも任意の表示位置のキャプチャが出来る様になりましたとさ。[C...先日はUIImageを切り取る方法について投稿しました。はてなブログPro音楽好きの元組み込みソフトエンジニアによるプログラミング勉強日記(主にiOS)。他の興味のあることも書いていきます。グーグルアドセンス」を利用しています。広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookie(クッキー)を使用することがあります。Google](https://www.google.com/intl/ja_JP/policies/technologies/ads/)」をご覧ください。はてなブログをはじめよう!anthrgrnwrldさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。