1

これが悪い質問である場合は申し訳ありませんが. . .

このような UIColor へのショートカットを作成したい

[UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1]

何らかのショートカットを入力できるように、何らかの方法で #define を使用できますか? 試してみましたが、表記がずれているのではないかと思います。. .

#define が定数専用であるか、何らかの理由でこの状況に適用されない場合、そのメソッドをショートカットする他の方法はありますか?

ありがとう!

4

5 に答える 5

4

#define は単なる美化されたテキスト置換システムです。次のように定義すると、次のようになります。

#define key value

次に、プリプロセッサは、コンパイラが何かを実行できるようになる前であっても、すべての出現をkeywithに置き換えます。valueしたがって、何を定義するかは問題ではありません。値として何でも使用できるため、次のようなことができます

#define kMyColor [UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1]

ただし、この場合は、おそらく静的定数変数を使用する必要があります。

static const UIColor *myColor = [UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1];
于 2012-05-17T17:20:27.073 に答える
4
#define RGBA(r,g,b,a) [UIColor colorWithRed:(r) green:(g) blue:(b) alpha:(a)]

使用する代わりに:

[UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1]

これを使って:

RGBA(0.35,0.79,0.92,1)

このチュートリアルを見てみましょう: UIColor Shortcuts

于 2012-05-17T17:20:37.983 に答える
4

あなたの質問のテキストでは、ショートカットしたいものは明確ではありません.1つの色、値を持つRGBA色の作成[0..255]ですか?

DrummerB が最初に答え、Justin Boo が 2 番目に答えました。

両方に適したソリューションを提案したいと思います。

両方をカバーできるカテゴリを作成します

  • [UIColor colorWith255ValuesWithRed: 128 green: 35 blue: 40 alpha:255]、それはあなたが今使っているメソッドをラップします
  • UIColor オブジェクトを名前とカウンター部分とともに静的な NSMutableDictionary に格納する UIColor クラス メソッドを作成します。次のように呼び出します。[UIColor registeredColorWithName:@"activeForegroundColor"]

カラーレジスタのアイデアのサンプルコードを書きました:

UIColor+Register.h

#import <UIKit/UIKit.h>

@interface UIColor (Register)
+(void)registerColor:(UIColor *)color 
             forName:(NSString *)name;

+(UIColor *)registeredColorForName:(NSString *)name;

+(void)unregisterColorForName:(NSString *)name;
@end

UIColor+Register.m

#import "UIColor+Register.h"

@interface UIColor (RegisterPrivate)
+(NSMutableDictionary *)colorRegister;
@end

@implementation UIColor (RegisterPrivate)
+(NSMutableDictionary *)colorRegister
{
    static dispatch_once_t once;
    static NSMutableDictionary *register_;
    dispatch_once(&once, ^{
        register_ = [NSMutableDictionary dictionary];
    });
    return register_;
}
@end


@implementation UIColor (Register)

+(void)registerColor:(UIColor *)color 
             forName:(NSString *)name
{
    [[self colorRegister] setObject:color forKey:name];
}

+(UIColor *)registeredColorForName:(NSString *)name
{
    return [[self colorRegister] objectForKey:name];
}

+(void)unregisterColorForName:(NSString *)name
{
    [[self colorRegister] removeObjectForKey:name];
}

@end

使用法:
登録

[UIColor registerColor:[UIColor redColor] forName:@"activeColor"];
[UIColor registerColor:[UIColor grayColor] forName:@"passiveColor"];

アクセス

[view1 setBackgroundColor:[UIColor registeredColorForName:@"passiveColor"]];
[view2 setBackgroundColor:[UIColor registeredColorForName:@"activeColor"]];

登録解除

[UIColor unregisterColorForName:@"activeColor"];
于 2012-05-17T17:34:56.540 に答える
3

UIColor でカテゴリを作成し、新しいクラス メソッド (blackColor、whiteColor など) を定義します。このようにして、コードは少なくとも既存のスタイルに適合します。

+(UIColor*)myColor
{
    return [UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1];
}
于 2012-05-17T17:31:07.737 に答える
1

必要に応じて、HEX RGB の定義を次に示します。

#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

使用法:

UIColor *color = UIColorFromRGB(0xe8e600); //0xe8e600 hex representation...
于 2012-05-17T17:40:07.303 に答える