7

同様の質問がすでに出されていることは知っていますが、満足のいく回答が得られませんでした。だから私はこの質問をもう一度追加しています。

iphone アプリケーションでのユーザーの選択に基づいて、アプリケーションのルック アンド フィールを変更する必要があります (カラー フォントの背景画像など)。これを達成するための標準的な方法はありますか?

考えられる解決策の 1 つは、テーマごとに xib ファイルを複製し、選択に基づいてロードすることです。これは良いアプローチですか?主に xib のコンセントとアクションを配線すると、サウンドが冗長なタスクになるためです。

この疑問に対する専門家の提案を見たいと思います。事前に助けてくれてありがとう。

-ミア

4

3 に答える 3

0

非XIBルートの場合

色:iOS5は新しい外観APIを公開しています。ほとんどのUI要素には、tintColorまたはbackgroundColorを設定する場合のオプションがあります。まれに、背景画像ですら。

フォント:常に変更できましたが、アニメーション化できませんでした。

背景画像:メインのUIViewには、背景画像のオプションが必要です。それが失敗した場合は、パターン画像の背景色を選択できます。

于 2012-01-11T13:48:47.867 に答える
0

CodaFI が言ったように、iOS 5 以降を使用している場合は、既にテーマ機能があります。それはこのように動作します:

  • <IAppearanceContainer>クラスにプロトコルを追加します。

  • 変更するプロパティを で装飾しますUI_APPEARANCE_SELECTOR。例:

    @interface UINavigationBar : ...<IAppearanceContainer>
    @property(nonatomic,retain) UIColor *tintColor UI_APPEARANCE_SELECTOR;
    @終わり
    

  • クラスのすべてのインスタンスの色を変更します。
    [[UINavigationBar の外観] setTintColor:[UIColor redColor]];
    

上記の例は ですが、UINavigationBar任意のカスタム クラスで機能します。iOS 6.1 ですでにサポートされているオブジェクトを確認するには、ドキュメントを確認するか、次のコマンドを実行します。

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/UIKit.framework/Headers

grep -H UI_APPEARANCE_SELECTOR ./* | sed 's/ __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0) UI_APPEARANCE_SELECTOR;//'

モジュール式のテーマが必要だとしましょう:

  • すべてのフォント、色、音楽などを含む大きな plist ファイルを作成します。これらの各ファイルがテーマになります。
  • [x appearance] setWhatever:<plist value>]シングルトンを介してファイルを読み取り、各テーマ対応要素のような行で値を設定します。
  • 異なる要素を表示する必要がある同じ要素のインスタンスがある場合は、シングルトンを介してそれらの画像を取得します。

これは、多かれ少なかれ Amit Vyawahare からのヒントです。読みやすいので、xmlの代わりにplistと言いました。本当に必要でない限り、NIB を複製しないでください。

于 2013-02-24T11:49:28.380 に答える
-1

テーマ ベースのアプリケーション IOS アプリケーションを実装する最良の方法 (~xib ルートを使用しない)。テーマのすべての部分を含む build.xml ファイルを作成する必要があります。レイアウトを同じに保つ必要があり、ユーザーの好みに応じて、そのレイアウトで画像、スタイル、フォント、言語、ビューを変更できます。これにより、コードが重複することがなくなり、アプリケーションから最高のパフォーマンスが得られます。

于 2012-01-11T13:58:51.513 に答える