RGB ползунок iOS SDK Interface Builder, производящий другой цвет, чем UIColor с RGB - PullRequest
6 голосов
/ 18 февраля 2012

В конструкторе интерфейса я изменил цвет UILabel на этот скриншот, имея Red 255, Green 159, Blue 0 и Opacity на 100%.который дает оранжевый цвет.

IB RGB Sliders Color Produced in Center

Я программно изменяю цвет UILabel, чем изменяю его на исходный цвет, используя это ...

timeLabel.textColor = [UIColor colorWithRed:255.0 green:159.0 blue:0.0 alpha:1.0];

и это дает этот цвет .... UIColor color

Я думал, что это должно быть то же самое, кто-нибудь знает, что я делаю неправильно?пожалуйста помогите, спасибо.

Ответы [ 4 ]

7 голосов
/ 18 февраля 2012

РЕДАКТИРОВАТЬ: Два года спустя, этот пост все еще получить некоторую карму и комментарии.Исправлен мой старый ответ на лучший.

Самый разумный и многократно используемый способ добавить функцию, которая может принимать ввод от 0 до 255 для UIColor, - это создание пользовательской категории.Легче читать, легче отлаживать, другим людям легче вносить свой вклад и поддерживает проект в чистоте и структурированности, поскольку он выходит за рамки простого представления viewcontrollers.Итак, добавьте следующие файлы и импортируйте их в свои m-файлы, где бы они вам не понадобились

UIColor + Extra.h

@interface UIColor (Extra)
+ (UIColor *)colorWithR:(uint)red G:(uint)green B:(uint)blue A:(uint) alpha
+ (UIColor *) randomColor;
+ (UIColor *) colorWithHex:(uint) hex;
@end

UIColor + Extra.m

#import "UIColor+Extra.h"

@implementation UIColor (Extra)

+ (UIColor *)colorWithR:(uint)red G:(uint)green B:(uint)blue A:(uint) alpha
{
  return [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/100.f];
}

+ (UIColor *) randomColor
{
    CGFloat red =  (CGFloat)random()/(CGFloat)RAND_MAX;
    CGFloat blue = (CGFloat)random()/(CGFloat)RAND_MAX;
    CGFloat green = (CGFloat)random()/(CGFloat)RAND_MAX;
    return [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
}
+ (UIColor *) colorWithHex:(uint) hex
{
    int red, green, blue, alpha;

    blue = hex & 0x000000FF;
    green = ((hex & 0x0000FF00) >> 8);
    red = ((hex & 0x00FF0000) >> 16);
    alpha = ((hex & 0xFF000000) >> 24);

    return [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/255.f];
}
@end
2 голосов
/ 18 февраля 2012
timeLabel.textColor = [UIColor colorWithRed:255/255.0f green:159.0/255.0f blue:0.0/255.0f alpha:1.0];
0 голосов
/ 14 января 2017

Попробуйте установить «Device RGB» - у меня это сработало

enter image description here

0 голосов
/ 23 января 2015

Очень простой способ воспроизвести цвета в цветовой палитре Xcode - использовать эту ссылку https://github.com/rob-brown/RBCategories/blob/master/UIColor+RBExtras.m

это позволяет цветам карандашей, как это .... UIColor *ThisColor = [UIColor blueberryCrayonColor];

...