SLComposeViewControllerの表示が遅かったり、ちらつく時

公開: 2014-09-20 16:03
更新: 2016-04-29 06:02

最近日に日に左手の生命線が
濃く、深く、長くなってます。まじで。
あっきぃは少なく見積もって380歳くらいまで生きそうです。



iOSでFacebookやTwitterに簡単にシェアできるアレ
SLComposeViewControllerの表示がちらついたり遅かったりすることがありまふ。

SLComposeViewController

おかしいなーおかしいなー
なんだろうなーなんだろうなー
と思ってあれこれ調べたらこんな記事が
⇒ ios - drawViewHierarchyInRect:afterScreenUpdates: delays other animations - Stack Overflow



流石我らのStackOverflow!
Yahoo知恵袋に聞いても分からないことが平然と書いてあるぜ!



つまり...ViewをUIImageに変更したりするときによく使うコイツ

UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; //←コイツ
UIImage* img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

iOS7から追加されたdrawViewHierarchyInRect:afterScreenUpdates:
afterScreenUpdatesをYESにするとGPU系が遅延してしまうらしい。
(何が何のか気になる方はStackOverflowの英語を読もう!)



対処法としてはafterScreenUpdatesをNOにするか、
(ただしViewの更新前を取得してしまうので注意)

[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];

昔ながらの奴を使うのが良いでしょう。
(ただしdrawViewHierarchyInRectの方が数倍速い)

UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()]; //←昔ながらの奴
UIImage* img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

これで解決っ
ではでは♪


この記事をシェア
この記事へのコメント(5)
1: ほまてぃ: 2015/04/06(月) 12:42:59 ID:6fXTfE
SLComposeView の表示を日本語にするのはどのようにされているのですか?
スクショでは「キャンセル」、「投稿」と表示されている部分が、こちらえは英語で、 "Cancel", "Post" になってしまいます。
2: あっきぃ: 2015/04/07(火) 15:13:26 ID:wYR8HF
>>1
プロジェクトの設定によると思います!
Project > Info > Localization のところがデフォルトで英語オンリーになっているので、「Japanese」を追加してみてください。あと端末自体の言語設定も関係あるので、それもご確認を〜。
3: ほまてぃ: 2015/04/09(木) 15:31:41 ID:6fXTfE
ありがとうございます。

シミュレーターではできなかったので、実機でやってみなきゃいけないかな。。。
4: あっきぃ: 2015/04/09(木) 18:19:37 ID:wYR8HF
>>3
ビルドの設定で変更出来ます!ってな記事をさっそく書きました!
http://appstars.jp/archive/648
5: あっきぃ: 2015/04/09(木) 18:39:22 ID:wYR8HF
>>3
そしてSLComposeViewに至ってはプロジェクトのLocalizationは関係ない気がしてきました!
この記事にコメントする
書き込む
あっきぃ(@appstars_aki)
Web、iOSなフリーランサーです。好きなものはお寿司です。でもお寿司は高いので普段は雑草とか拾ったドングリを食べています。お仕事や意味もなく毎月お小遣いをくれる人を探してます。

お仕事の依頼や自分で作ったアプリのレビューを希望しちゃう方はaki@appstars.jpまでご連絡ください。