Похоже, что целое число, на которое вы ссылаетесь, является упакованным целым числом. См. документацию по цвету Android. Вам нужно найти способ преобразовать упакованный int в шестнадцатеричный, а затем вы можете использовать этот макрос (полученный здесь ), который преобразует шестнадцатеричное число в UIColor:
#define HEXCOLOR(c) [UIColor colorWithRed:((c>>24)&0xFF)/255.0 green:((c>>16)&0xFF)/255.0 blue:((c>>8)&0xFF)/255.0 alpha:((c)&0xFF)/255.0]
Я знаю, что на самом деле это не ответ на ваш вопрос, но это может помочь вам сузить область поиска.
Изменить
Итак, я только что понял, что приведенный выше макрос действительно решает вашу проблему. Просто дайте ему целочисленное представление, и он даст вам правильный UIColor. Мой тестовый код ниже:
UIColor *color = HEXCOLOR(-16776961); // Blue const from android link above
const CGFloat *components = CGColorGetComponents(color.CGColor);
NSString *colorAsString = [NSString stringWithFormat:@"%f,%f,%f,%f", components[0], components[1], components[2], components[3]];
NSLog(@"%@",colorAsString); // Prints 1.0 0.0 0.0 1.0 which corresponds to 0xff0000ff
Мне помогли здесь.
Изменить
Исправлен макрос для ожидания правильных значений RGBA:
#define ANDROID_COLOR(c) [UIColor colorWithRed:((c>>16)&0xFF)/255.0 green:((c>>8)&0xFF)/255.0 blue:((c)&0xFF)/255.0 alpha:((c>>24)&0xFF)/255.0]
Предыдущий макрос ожидал RGBA, в то время как Android color int давал ARGB.
person
nalyd88
schedule
10.01.2014
view.setBackgroundColor(color)
Определитеcolor
как значение выше. - person IssacZH.   schedule 10.01.2014