2

私は Objective-C の初心者で、アーキテクチャまたはデザイン パターンの質問があります。私は ios アプリを作成していますが、ほとんどの ios アプリと同様に、さまざまな色、フォント、パターンなどを使用しています。現在コードを間違って書いているのかもしれませんが、色の設定などを書き直しています。その結果、色を変更すると、コード内のすべての色設定を見つけたり、書き直したりする必要があります。私には少し非効率に思えます。

たとえば、アプリの複数の場所で暗赤色を使用しています。[UIColor colorWithRed...] メソッドをかなり頻繁に書く傾向があります。ただし、カスタム カラーを (UIColor として) 返すシングルトンを作成することが、「スタイル パッケージをモジュール化する」ための合理的なアプローチであるかどうか、興味があります。したがって、私はこのようなものを書くことができます

[label setTextColor:[[MyStyleSingletonClass sharedStyler] myDarkRed]];

したがって、デザイナーが突然 myDarkRed をもう少し暗くしたい場合は、一度変更してからアプリを使用することをお勧めします。明らかに、色よりもスタイルと UX の方が重要ですが、このアプローチが理にかなっているのか、それとも将来の問題に備えることができるのか、興味があります. あるいは、この機能はすでにobjective-cに存在し、私は要点を逃しています。前もって感謝します。

4

2 に答える 2

8

このようなものへのより良いアプローチは、UIColor 自体のクラス メソッドのカテゴリだと思います。多くのカスタム カラーを含むプロジェクトの色のカテゴリを作成することがよくあります。

このようなもの:

// UIColor+AppAdditions.h
@interface UIColor (AppAdditions)

+ (UIColor *)myDarkRed;

@end

// UIColor+AppAdditions.m

#import "UIColor+AppAdditions.h"

@implementation UIColor (AppAdditions)

+ (UIColor *)myDarkRed
{
    return [UIColor colorWithRed:0.1 green:0.0 blue:0.0 alpha:1.0];
}

@end

そうすれば、シングルトン全体を必要とせず、シングルトンが他のことを行う場合に備えて、より移植性が高くなります。そして、次のように色にきれいにアクセスできます。

[label setTextColor:[UIColor myDarkRed]];

ノート

ロブとポールが述べたように。それらに適切な名前を付けるのが最善です。私はあなたが持っていた名前を取りましたが、特に使用するためにそれらに名前を付け、接頭辞や接尾辞などの規則に従うのが最善です.

于 2013-03-15T14:36:26.527 に答える
5

なぜ使用しないのmacroですか?

YourHelperClass.h

#define DARK_RED    [UIColor colorWithRed:0.1 green:0.0 blue:0.0 alpha:1.0]

次のように使用できます( import を忘れないでくださいYourHelperClass.h):

[label setTextColor:DARK_RED];

使ったほうがいいと思いますmacro

于 2013-03-15T14:53:02.697 に答える