web-dev-qa-db-ja.com

RGBAからUIColorを作成するにはどうすればよいですか?

プロジェクトでNSAttributedStringを使用したいのですが、標準セット(redColorblackColorgreenColorなど)UILabelは、これらの文字を白色で表示します。このコードの私の行はここにあります。

[attributedString addAttribute:NSForegroundColorAttributeName
                         value:[UIColor colorWithRed:66
                                               green:79
                                                blue:91
                                               alpha:1]
                         range:NSMakeRange(0, attributedString.length)];

Core ImageフレームワークのCIColorで色を作ろうとしましたが、同じ結果が示されました。正しい方法で実行するには、コードを何に変更すればよいですか?

回答をお待ちしております!

44
agoncharov

値が正しくありません。各カラー値を255.0で除算する必要があります。

[UIColor colorWithRed:66.0f/255.0f
                green:79.0f/255.0f
                 blue:91.0f/255.0f
                alpha:1.0f];

ドキュメントの状態:

+ (UIColor *)colorWithRed:(CGFloat)red
                    green:(CGFloat)green
                     blue:(CGFloat)blue
                    alpha:(CGFloat)alpha

パラメータ

redカラーオブジェクトの赤成分。0.0〜1.0の値として指定します。

green0.0〜1.0の値として指定される、カラーオブジェクトの緑のコンポーネント。

blue0.0から1.0の値として指定された、カラーオブジェクトの青色成分。

alpha0.0〜1.0の値として指定された、カラーオブジェクトの不透明度の値。

ここを参照

113
yfrancis

私のお気に入りのマクロの1つ、なしのプロジェクトなし:

#define RGB(r, g, b) [UIColor colorWithRed:(float)r / 255.0 green:(float)g / 255.0 blue:(float)b / 255.0 alpha:1.0]
#define RGBA(r, g, b, a) [UIColor colorWithRed:(float)r / 255.0 green:(float)g / 255.0 blue:(float)b / 255.0 alpha:a]

Likeの使用:

[attributedString addAttribute:NSForegroundColorAttributeName
                         value:RGB(66, 79, 91)
                         range:NSMakeRange(0, attributedString.length)];
27
Geri

UIColorは0〜1.0の範囲を使用し、255までの整数ではありません。これを試してください。

// create color
UIColor *color = [UIColor colorWithRed:66/255.0
                                 green:79/255.0
                                  blue:91/255.0
                                 alpha:1];

// use in attributed string
[attributedString addAttribute:NSForegroundColorAttributeName
                         value:color
                         range:NSMakeRange(0, attributedString.length)];
5
calimarkus

コードを試してください

[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0] range:NSMakeRange(0, attributedString.length)];

のような

Label.textColor=[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0];  

UIColorのRGBコンポーネントは、255までではなく、0〜1の間でスケーリングされます。

3

@Jaswanth Kumarが尋ねたので、これは LSwift からのSwiftバージョンです:

_extension UIColor {
    convenience init(rgb:UInt, alpha:CGFloat = 1.0) {
        self.init(
            red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0,
            green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0,
            blue: CGFloat(rgb & 0x0000FF) / 255.0,
            alpha: CGFloat(alpha)
        )
    }
}
_

使用法:let color = UIColor(rgb: 0x112233)

3
superarts.org