Похоже, что целочисленное число, к которому вы ссылаетесь, является упакованным целым числом. См.: android color documentation. Вам нужно найти способ, чтобы преобразовать упакованную Int в шестнадцатеричном, а затем вы можете использовать этот макрос (получен here), который преобразует шестнадцатеричное число в 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
Я имел некоторую помощь от here.
Редактировать
Исправлен макрос ожидать правильных значений 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 цвета ИНТ дал ARGB.
Что означает отрицательное целое число представляет? – rmaddy
На самом деле это значение цвета, которое можно установить на стороне android. В android я могу преобразовать это отрицательное целочисленное значение в шестнадцатеричное значение. Но я хотел знать, могу ли я преобразовать это значение в iOS или нет. –
Тип int имеет 4 байта, имеет ли первый байт значение красного, второе-> зеленое значение, третье-> синее значение, last-> alpha? – KudoCC