2011-10-10 13 views
3

私は私のiPhoneアプリで標準のルック・アンド・フィールを作成する方法を理解しようとしています。 だから私が今まで私は、通常で、このようなものすべて私のView Controllerを行うだろうUIViewのための背景を変更したい場合:あなたは50のUIViewsのように持っているとき私のiPhoneアプリ全体のルック・アンド・フィールを標準化する方法

self.view.backgroundColor = [UIColor groupTableViewBackgroundColor] 

これは非常に冗長でエラーが発生しやすくなり、管理する。そしてもちろん、クライアントは3日ぐらいごとに希望の背景イメージを変更します。

@implementation GuiDefaultsUIView 
+ (void) setDefaultProperties:(UIView *) view { 
    view.backgroundColor = [UIColor groupTableViewBackgroundColor]; 

し、手動で各ビューコントローラから[GuiDefaultsUIView setDefaultProperties:self.view]; を呼び出します。だから、私の次のオプションは、例えば、ヘルパーファイルを作成することです。これはうまくいきましたが、今私がやっていることですが、すべてのUIオブジェクト(UIButton、UITableViewなど)では、すべてのクラスのすべてのインスタンスで同様の関数を呼び出す必要があります。

私がしたいのは、これを標準化して、いつでも必要なときに上書きできるデフォルトのルックアンドフィールを得ることです。私はサブクラス化と考えましたUIView/UIButton/UITableViewしかし、それはそれを行う正しい方法のようには思われません。カテゴリを追加するといいですが、デフォルトのメソッド(例えば:init)をオーバーライドすることが正しい方法になるとは思わないでしょう。

So.どのようにあなたのルックアンドフィールを標準化しますか?

+0

これは[iOSアプリケーションのスタイリングの推奨方法は何ですか?]と同じ質問です(http://stackoverflow.com/questions/7151608/what-is-the-recommended-method-of-styling-an- ios-app/7153145#7153145)は、共通点からいくつかの要素のスタイルを設定するための間接参照を探しているためです。私は主題について決定的な答えがあるとは思わない。 – Jano

+0

@Jano私は決定的な答えを探しているとは言いません。もっとベストプラクティスに似ていますしかし、リンクをありがとう。それはやや助けになります。 – dartarrow

答えて

0

これは比較的単純なものです) たとえば、MyVievControllerという名前のカスタムUIViewControllerサブクラスを作成し、そのクラスからViewControllerを継承します。 次に、MyViewControllerのinitおよびviewWillAppearなどで、カスタマイズを行うことができます。サブクラスでsuperを必ず呼び出してください。 UITableViewControllerおよびUIViewの場合でも、図面をカスタマイズしたり標準プロパティを設定したりすることができます。

私たちのアプリではいつもそうしていますし、うまくいきます。カテゴリは場合によってはうまくいきます。たとえば、UINavigationBarのdrawRect-Methodをオーバーライドすることができます。

0

あなたができること(私はいくつかのプロジェクトでそれを見てきました)は、すべての定数を保存するクラスです。その後、必要なときにインポートして、適切なときに使用します。

0

すべてのビューでスーパークラスを作成してみませんか? そこに必要なすべてのプロパティを設定し、作成した新しいビューをすべてこのスーパークラスから継承させるようにします。

@interface NewView : PreDesignedUIview 

が、これは自動的にあなたのデザインを設定します: はあなたが設定する必要があり、新しいビューを作成するたびに、など

、その後のような背景色内部のデザインを持っている「PreDesignedUIview」と呼ばれるのUIViewを作成することとしましょうPreDesignedUIviewから新しいビューに移動します。

どうしたのですか?

0

背景色と画像を格納するユーティリティクラスを作成します。次に、これらの方法を使用して画像/色を取得します。変更する場合は、各ファイルを別々のメソッドで呼び出すのではなく、ユーティリティクラスのメソッドから返されていた色を変更してください。

関連する問題