Подтвердить что ты не робот

Как определить цвет iPhone 5c?

После анонса iPhone 5c, мне любопытно, знает ли кто-нибудь API, как получить цвет iPhone 5c? Я уверен, что всем будет удобно загружать соответствующую цветовую схему пользовательского интерфейса в цвет устройства.

Я собираюсь обернуть его чем-то вроде категории UIDevice, которая вернет UIColor.

Update: @ColinE и @Ortwin Gentz  указал на наличие для него частного метода экземпляра экземпляра UIDevice.

Обратите внимание, что в случае iPhone 5c то, что вы действительно ищете, это deviceEnclosureColor, поскольку deviceColor всегда будет возвращать # 3b3b3c, поскольку это передний цвет.

подпись метода:

-(id)_deviceInfoForKey:(struct __CFString { }*)arg1

Категория UIDevice для него:

@interface UIDevice (deviceColour)

- (id)_deviceInfoForKey:(struct __CFString { }*)arg1;
- (NSString*)deviceColourString_UntilAppleMakesItPublic;
- (NSString*)deviceEnclosureColour_UntilAppleMakesItPublic;


@end

@implementation UIDevice (deviceColour)

- (NSString*)deviceColourString_UntilAppleMakesItPublic
{
    return [self _deviceInfoForKey:@"DeviceColor"];
}

- (NSString*)deviceEnclosureColour_UntilAppleMakesItPublic
{
    return [self _deviceInfoForKey:@"DeviceEnclosureColor"];
}


@end
4b9b3361

Ответ 1

Там есть частный API для извлечения как DeviceColor, так и DeviceEnclosureColor. В случае iPhone 5c интересной частью является цвет корпуса (цвет устройства = передний цвет всегда # 3b3b3c).

UIDevice *device = [UIDevice currentDevice];
SEL selector = NSSelectorFromString(@"deviceInfoForKey:");
if (![device respondsToSelector:selector]) {
    selector = NSSelectorFromString(@"_deviceInfoForKey:");
}
if ([device respondsToSelector:selector]) {
    NSLog(@"DeviceColor: %@ DeviceEnclosureColor: %@", [device performSelector:selector withObject:@"DeviceColor"], [device performSelector:selector withObject:@"DeviceEnclosureColor"]);
}

Я написал об этом и предоставил пример приложения:

http://www.futuretap.com/blog/device-colors/

Предупреждение. Как уже упоминалось, это частный API. Не используйте это в сборках App Store.

Ответ 2

Цвет устройства (используемый?) должен быть закодирован в серийном номере устройства. У меня нет устройства для тестирования, пока они официально не выпущены, но я думаю, что решение будет похоже на это:

Типичный формат iPhone SN выглядит следующим образом: AABCCDDDEEF

AA = Factory и машинный идентификатор
B = Год изготовления (9 2009/2019, 0 - 2010/2020, 1 - 2011 и т.д.)
CC = Производство Неделя (01 - неделя 1 из B, 11 - неделя 11 из B и т.д.)
DDD = Уникальный идентификатор
EE = Цвет (A4 = черный)
F = размер (S = 16 ГБ, Т = 32 Гб)

[Источник]

Более подробная информация о старых методах здесь


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

Ответ 4

Это может помочь вам...

UIDevice *device = [UIDevice currentDevice];
    SEL selector = NSSelectorFromString([device.systemVersion hasPrefix:@"7"] ? @"_deviceInfoForKey:" : @"deviceInfoForKey:");
    if ([device respondsToSelector:selector]) {
        NSLog(@"DeviceColor: %@ DeviceEnclosureColor: %@",
              [device performSelector:selector withObject:@"DeviceColor"],
              [device performSelector:selector withObject:@"DeviceEnclosureColor"]);
    }

Ссылка: Обнаружение цвета iPhone/iPad/iPod touch?