1

iOS関連の質問を手伝ってもらえないかと思っていました。

きちんとしたテキスト効果を持つ iPhone アプリを作成したいと考えています。

たとえば、時計が 10 秒に達すると 1 秒ごとにパルスを発して時間が終了間近であることを示すタイマーがあるとします。

または、別の例として、ユーザーがゲームで間違ったボタンを押したときに、テキストを大きくして画面の大部分を占める非常に迅速なアニメーションがあり、必要なときにテキストが (消えるのではなく) 何も表示されないことがあります。終了します。

これらのそれぞれでも、Xcode 内で選択できないフォントを使用したいと考えています。

だから私の質問は、これらのようないくつかのテキスト効果を教える適切なチュートリアルの場所または本を知っている人はいますか?そして、独自のフォントとスタイルをフォントに使用する他のアプリ (つまり、グラデーションカラーなど) は、実際にアプリでこれをどのように行うのですか? ? 各数字の画像を作成し、スコアや時間を表示するたびにそれらの画像を使用することを考えていましたが、これはおそらく最適な方法ではありません。

どんな助けでも大歓迎です、

どうもありがとう、

交流

4

2 に答える 2

8

そのためにCoreTextを使用する必要はありません(ちなみに、CoreTextは理解するのがそれほど簡単ではありません。私はこのフレームワークで多くの作業を行ったと信じています。あなたの場合、そのような複雑な低レベルのフレームワークを使用する必要はありません一方、より簡単な手段を使用して、必要なことはすべて行うことができます)

1. アニメーション

のブロックベースのアニメーション メソッドを使用して「パルス」アニメーションを実行し、ラベルの を、たとえば 100% から 130% へのスケーリングをアニメートしてから 100% に戻す にUIView変更するのは非常に簡単です。transformCGAffineTransformScale

ラベル パルスのサイズを 100% から 130% にする最も簡単な例は、次のコードを使用することです。

[UIView animateWithDuration:0.5 animations:^{
   // grow the label up to 130%, using a animation of 1/2s
   myLabel.transform = CGAffineTransformMakeScale(1.3,1.3); 
} completion:^(BOOL finished) {
   // When the "grow" animation is completed, go back to size 100% using another animation of 1/2s
   [UIView animateWithDuration:0.5 animations:^{
        myLabel.transform = CGAffineTransformIdentity;
   }];
}];

もちろん、これは単純な例であり、他のより完全な[UIView animationWithDuration:…]バリアントを使用してアニメーションをカスタマイズできます (遅延の追加、アニメーション カーブの制御など)。

CoreAnimation を使用して、明示的でより詳細なアニメーションを構築することもできます。より複雑なアニメーションを構築するための詳細については、Apple ドキュメントのCore Animation Cook BookおよびCore Animation Programming Guideを参照してください。ただし、あなたの場合、[UIView animationWithDuration:…]とにかくバリアントで十分なはずです)

2.カスタムフォント

UIAppFontsアプリケーション リソースにフォント (TTF ファイル) を追加し、Info.plistのキーを使用してこれらのカスタム フォントを一覧表示するだけで、アプリケーションにカスタム フォントを簡単に追加できます。詳細については、Info Plist キー リファレンスのこちらを参照してください。

3.テキストのグラデーションカラー

この種のことは、画像のマスクにテキストを描画することで実行できます。画像にグラデーションを描画し (CoreGraphics を使用。Quartz 2D プログラミング ガイドを参照)、テキストをマスクとして使用します (マスクの黒い部分が描画され、白い部分が透明になります)。

しかし、これを行うためのさらに簡単な方法は、リソースにパターンとして使用する画像 (たとえば、グラデーションのある画像) を用意し、次のコードを使用してこのグラデーション色を使用することです。

yourLabel.textColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourpattern.png"]];

UIImageCoreGraphics (または CAGradientLayer など) を使用して、(リソースに含める代わりに) コードでグラデーションを作成することもできます。

于 2012-11-06T21:07:41.640 に答える
0

CoreTextを使用するような低レベルの描画コードが必要なようです

Core Text Frameworkは、テキストのレイアウトとフォントの処理を行うための高度な低レベルのテクノロジです。高性能と使いやすさを実現するように設計されたコアテキストレイアウトエンジンは、ATSUI(Apple Type Services for Unicode Imaging)の最大2倍の速度です。Core TextレイアウトAPIはシンプルで一貫性があり、Core Foundation、Core Graphics、Cocoaと緊密に統合されています。

あなたの質問はかなり一般的であるため、具体的な答えを出すのは難しいですが、私はそのフレームワークのドキュメントを読むことから始めます。


また、この質問は役立つかもしれません:https ://stackoverflow.com/questions/2763757/core-text-tutorial

于 2012-11-06T21:05:24.403 に答える