3

既存のスマイリー/絵文字アイコンとして独自のスマイリー (カスタム) を追加する必要があるチャット アプリケーションを作成しています。それは可能ですか? どんな体にもアイデアがあるなら、私を助けてください。

少し早いですがお礼を

4

1 に答える 1

5

私は現在、同じことについて研究しています。検討できる方法はいくつかありますが、チャット アプリケーションを開発しているという事実を考慮すると、UITableView を使用し、スクロールのパフォーマンスが大きな懸念事項になると思います。使用する方法が複雑すぎることが判明した場合、特に古いデバイスでは、スクロールが非常に不安定になります (iPhone4 をターゲットにしているかどうかはわかりません)。

次のオプションを特定しました。

1) 各メッセージを UIWebView としてロードし、HTML を使用して、カスタム絵文字が必要な場所に画像を挿入できます。これは最も簡単な方法のようですが、遅い方法でもあります。私はこれをあまり調べておらず、最後のオプションとして保持しています。

2) UILabel サブクラスを使用できます。これらのコードをいじることができます。ほとんどのコードは、"http://" や "www" などのテキスト プレフィックスをスキャンします。そこにターゲットアクションを含むUIButtonを挿入します。代わりに UIImageView をその場所に配置できます。この方向性を導くためのいくつかの優れたプロジェクトを次に示します。

Nimbus 属性のラベル (やや複雑) を見てください。および TTTAttributedLabel。すべての中で最高の (最も単純な) ものはFancyLabelです。これは、スマート ラベルの本当にきちんとした簡単な実装です。

3) NSAttributedStrings を見ることができます。申し訳ありませんが、私は彼らとの経験があまりありません。DTCoreTextというプロジェクトで、同様のものがここにあります。先に進んで、彼らが何をしようとしているのかを理解しようとすると、本当に役に立ちます。DTCoreText のチュートリアルも探してください。これが何よりもあなたを助けると信じています。github から DTCoreText git を複製することを忘れないでください。zip をダウンロードしただけでは機能しません。

4)私の頭の中で最も複雑で、おそらく最もパフォーマンスの高い方法は、どの行に絵文字があるかを判断してラベルのサイズを手動で計算し(通常の文字よりも少し大きいため)、それらを(十分な) NSString のスペース。NSString を UILabel として描画するか、次のメソッドを使用して描画します[textX drawInRect:theRect withFont:font lineBreakMode:UILineBreakModeClip alignment:UITextAlignmentCenter];。次に、各絵文字を CALayer として正しい位置に手動で挿入します。

さまざまな描画方法に関するパフォーマンス関連のクエリについては、layer-trees-vs-flat-drawing-graphics-performance-across-ios-device-generations に関する floriankugler ブログを参照することをお勧めします。これは、いくつかの描画方法を比較した実に素晴らしい記事です。drawRect または単純な UIView 階層メソッドの代わりに CALayers を使用することをお勧めします。

5) スクロールでまだジッターが発生する場合は、勇気を出して OpenGL でテキストをレンダリングしてみてください。私もこれをさらに読んでいますが、非常に難しい作業のようです。私のアプリはまだ震えており、私が得ることができるあらゆる助けを借りることができました.

6) 同僚の 1 人は、Apple が Apple Emoji フォントを作成するために行ったように、TTF に PNG を埋め込んでカスタム フォントを作成することも提案しました。繰り返しますが、私はそこでほとんど役に立ちません。どちらかというと、とても難しい方法に思えます。

思ったほど多くのリンクを提供できなかったことをお詫びしますが、現時点では十分な評判がありません. :P

于 2013-05-31T03:58:29.370 に答える