Iが "変化" UIColor
の彩度、明度及びアルファに次の関数を使用しています:UIColor getHue:彩度:輝度:アルファ:戻るNO
//UIColor *color = [self color:[UIColor redColor] saturation:0.5 brightness:0.5 alpha:0.5];
- (UIColor *)color:(UIColor *)color saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha {
CGFloat h, s, b, a;
[color getHue:&h saturation:&s brightness:&b alpha:&a];
return [UIColor colorWithHue:h saturation:(s * saturation) brightness:(b * brightness) alpha:(a * alpha)];
}
前IOSの11(GM)にこれがし完璧にうまく動作します。ただし、[UIColor getHue:saturation:brightness:alpha:]
はNO
を返し、hsba値は変更されません。 UIColor.h
で
コメントは言う:
受信機に互換性色空間である場合、任意の非NULL パラメータが読み込まれ、「YES」が返されます。そうでなければ、 のパラメータは変更されず、 'NO'が返されます。
「互換性のある色空間」とはどういう意味ですか?色空間を変換する必要がありますか?私はそれをどのように達成するのですか? 私の.xcassetsのすべての色はsRGBにあります。
EDIT:修正の種類がHSBA値を取得するには、次の方法を使用することです。
CGFloat rTemp, gTemp, bTemp, aTemp;
[color getRed:&rTemp green:&gTemp blue:&bTemp alpha:&aTemp];
CGFloat h, s, b, a;
[[UIColor colorWithRed:rTemp green:gTemp blue:bTemp alpha:aTemp] getHue:&h saturation:&s brightness:&b alpha:&a];
迅速試験はUIColor' 'に渡されるコードを介して代わりの資産から作成された場合にコードが機能することを示しています。 – rmaddy
@rmaddyはい、私もそれに気づきました。しかし、なぜこれはsRGBで動作しませんか? –
私はここで何が起こっているのか、どのように進行するのが最善かを説明するつもりでしたが、あなたはすでに答えを受け入れているようです。私はあなたの質問を少し煮詰めることをお勧めします。 – Mustang