Как разрешить пользователям приложения устанавливать шрифт, размер, цвет и выравнивание приложения с помощью пользовательских настроек? Мне интересно, могу ли я сохранить UIFont в NSUserDefaults. Как я могу обойти эту проблему?

1
German 2 Июн 2013 в 15:23
1
См. этот ответ для UIColor. Для UIFont сейчас (поскольку он не принимает протокол NSCoding, вы можете просто сохранить строку с именем шрифта или словарь с необходимыми параметрами и передать их методу, который вернет UIFont на основе значений, полученных при восстановлении значений по умолчанию.
 – 
Alladinian
2 Июн 2013 в 15:47
Вы заглянули на сайт cocoacontrols.com? Есть множество примеров проектов, которые позволяют пользователям выбирать цвета шрифта и изменять текст шрифта или размеры
 – 
Sam B
2 Июн 2013 в 16:00
Да. Есть отличный пример github.com/chrismiles/CMTextStylePicker, но мне нужно сохранить с помощью NSUserDefaults
 – 
German
2 Июн 2013 в 16:41

1 ответ

Лучший ответ

Вы можете создать холдинг NSDictionary:

Шрифт?

Его имя PostScript.

Размер?

NSNumber

Цвет?

NSData (см. Ниже)

Выравнивание?

NSNumber


NSUserDefaults может сэкономить NSData. Для сериализации:

NSData * data = [NSKeyedArchiver archivedDataWithRootObject:color];
[[NSUserDefaults sharedUserDefaults] setObject:data forKey:MONDefaultsKey];

Затем используйте NSKeyedUnarchiver для десериализации представления NSData.

Вы также можете рассмотреть возможность сохранения его как сериализованного NSAttributedString, если есть связанная строка (строки) - но в большинстве случаев это NSUserDefaults злоупотребление.

1
justin 2 Июн 2013 в 15:51