Как определить цвет 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
Ответы
Ответ 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 Гб)
[Источник]
Более подробная информация о старых методах здесь
Я хотел бы отметить, однако, что я ожидаю, что не поддерживается метод получения серийного номера. Предполагая, что вам просто хотелось бы узнать эту информацию, чтобы вы могли настроить свой пользовательский интерфейс, я просто добавил пользовательский параметр или попросил их выбрать цвет своего устройства при первом запуске (или какой-то другой ранний момент в приложении - жизнь пользователя)
Ответ 3
Несколько людей в Twitter имеют процитировал следующий метод:
[[UIDevice currentDevice] _deviceInfoForKey:@"DeviceColor"]
Хотя я сам этого не подтвердил.
Ответ 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?