17

UIImage複数の画像フレームと、アニメーション GIF ファイルから一緒にスライスされたデュレーションを含む があります。画像を a に読み込むと、期待どおりにアニメーション化されますが、代わりにUIWebViewa を使用したいと思います。UITextView明らかな選択は、TextKit をカスタムNSLayoutMangerおよび多くのカスタムNSAttributedString属性とともに使用して、さまざまな描画効果を実現することです。インラインで表示する必要があるすべての画像の s を含む単一のUITextViewものを提供したいと思います。これらのアニメーション化された の 1 つをロードするときを除いて、正常に動作していますが、フレームを通してアニメーション化されません。これを達成する方法について何か考えはありますか?私は理論的な選択肢を思いつきました:NSAttributedStringNSTextAttachmentUIImages

  1. アニメーション画像ごとに、カスタム定義の属性を追加します
  2. レイアウト マネージャーが背景を描画するときは、この属性を繰り返して添付ファイルの位置を特定します。
  3. UIImageViewアニメーション イメージを含む を作成し、サブビューとして追加し、呼び出すためのテキスト ビューへのコールバックstartAnimating

私はまだこれを試していませんが、かなりハッキーです。より良いオプションがあるかどうか疑問に思っています。

要約すると、追加のオブジェクトを必要とせずに、ビアのUIImage内側をアニメーション化したいと考えています。これが以前に で行われたという事実は無視できます。には、現在構成しているアニメーション フレームを設定するためのプロパティ ( 、 ) があります。に割り当てるとアニメーションが表示され、 に設定するとアニメーションは表示されません。UITextViewNSTextAttachmentNSAttributedStringUIImageViewUIWebViewUIImageimagesdurationUIImageViewNSTextAttachment

フィードバックをいただければ幸いです。ありがとう!

4

1 に答える 1

4

この動作は、サブビューUITextViewを使用して添付ファイルを表示しないためだと思います。UIImageViewNSTextAttachments を追加した場合と追加しない場合のビュー階層UITextViewを観察すると、新しいビューは表示されません (Xcode でビュー デバッグを使用するか、または と言うと、ビュー階層を観察できます[[[UIApplication sharedApplication] keyWindow] recursiveDescription])。おそらく、 はUITextViewアタッチメントを直接描画します。

とはいえ、アニメーション化可能なアタッチメントを含める方法の 1 つは、アニメーション化さUIImageViewれた自分自身を のサブビューとして作成し、 がUITextViewを配置する場所に正確にNSLayoutManager配置しNSTextAttachment、UITextView がスクロールするたびにスクロールすることです。を呼び出すことにより、NSTextAttachmentからの長方形を取得できます(おそらく で)。NSLayoutManagerboundingRectForGlyphRange:inTextContainer:layoutManager:didCompleteLayoutForTextContainer:atEnd:

于 2015-05-07T09:40:45.653 に答える