Чтобы запустить пример проекта, клонируйте репо, и сначала запустите pod install из Directory Directory.
Giotto доступен через кокопод. Чтобы установить его, просто добавьте следующую строку в свой Podfile:
pod "Giotto" Giotto доступен по лицензии Apache. Смотрите файл лицензии для получения дополнительной информации.
Sdthememanager (впредь называется TM) рождается главным образом с намерением упростить и стандартизировать разработку приложений, которые требуют ребрендинга графического интерфейса.
Плист , описывающая тему, должна содержать словарь константов со всеми константами, в то время как стили могут быть расположены по желанию в других словари.
Он содержит все константы, такие как имена шрифтов, цвета или размеры. Технически это один уровень организованный словарь следующим образом: <costant_name> : <costant_value> согласно ключам есть следующие префиксы:
- Имена шрифтов: клавиша начинается с
FONT_- Цветовые коды: клавиша начинается с
COLOR_- Размеры (целое число o float): клавиша начинается с
DIMENSION_
Эспи:
{
“FONT_REGULAR” : “Helvetica-Neue”,
“COLOR_COMMON_BACKGROUND” : “color:000000FF”,
“DIMENSION_VIEW_WIDTH” : 3 // value is a NSNumber
}
color: объясняется в разделе конвенции Константы не могут содержать массив или словарь в качестве значения.
На том же уровне, что и константы, другие словари могут быть определены как функциональные группы графических стилей. Названия групп бесплатны. Технически, они являются организованными словарями следующим образом: <style_name> : <style_dictionary> Словарь стиля организован следующим образом: <property_name> : <value_to_apply> Примеры:
{
“CommonLabel” :
{
“_superstyle”: <style name of parent>,
“textColor” : “COLOR_COMMON_LABEL”,
“font”: “font:FONT_REGULAR,18”
},
“HomeViewController” :
{
“titleLabel” : “style:CommonLabel”,
“textField” :
{
“textColor” : “color:FFFFFF”,
“width” : “DIMENSION_FIELD_WIDTH”,
“layer.borderWidth” : 2
}
}
}
Конвенции _superstyle" , style: и font: объясняются в рамках разделов.
Чтобы ускорить разработку тем и разрешить обработку конкретных, но частых случаев, были определены следующие соглашения:
_superstyle: можно ввести в словарь стиля, чтобы указать, что стиль наследует от другого стиля. Когда стиль «родитель» применяется до стиля «ребенка», вы можете перезаписать клавиатуры в «Ребенок». Вы можете унаследовать от нескольких стилей, последовательно деляя их на «». Указанные стили будут применены по порядку, поэтому стиль, показанный после перезаписи значения клавиатур, который он имеет общего со стилем, который предшествует ему в списке.
style:style_name1,style_name2: свойство, указанное в ключе, стилизовано со стилями, перечисленными в списке. Показанные стили должны присутствовать в одной из групп стилей. Сокращенная версияs: style_name1,style_name2. Как_superstyleпоказанные стили применяются по порядку.font:font_name, font_size: NSTANTITICE UIFONT и устанавливает его как значение свойства, указанного в ключе. Это соглашение также может использоваться в постоянных. Короткая версияf: font_name, font_size.
font_nameможет принять обычные значения для загрузки шрифта системы:
system`systemBold``systemItalic`
color:color_string: рендеры color_string для создания UIColor для проверки свойства, указанного в ключе. Это соглашение также может использоваться в постоянных. Короткая версияc: color_string.nullилиnil: установите свойство, указанное в ключе какnil.point:x,y: установите свойство как cgpoint со значениями x и y. Значения X и Y интерпретируются как float.size:width,height: установите свойство в качестве cgsize с указанной шириной и значениями высоты. Значения интерпретируются как плавание.rect:x,y,width,height: установите свойство как Cgrect со значениями x, y, ширина и высота. Значения интерпретируются как плавание.edge:top,left,bottom,right: установите свойство в виде значений Uiedgeinsets с верхней, слева, внизу и правой. Значения интерпретируются как плавание.
Как уже упоминалось, стиль выглядит как словарь в одной из групп стилей и может быть применен к любому NSObject (обычно элемент интерфейса). Ключи словаря могут быть:
- Один из конвенций, учитывающих ключи (см. Выделенный абзац)
- свойство объекта, которое будет стилизовано
- Клавиатура одного из свойств объекта, которое будет стилизовано (Ex. «Layer.bordercolor»)
- Строка, которая не указывает на недвижимость, но будет обрабатываться в соответствующем методе, который каждый объект наследует от категории NSOBject+TheMemanager (см. Раздел «Специальное управление свойствами» ).
- Список свойств или клавиатур, разделенных «», (es. TextColor, Layer.Bordercolor).
Указанное свойство также может быть NSArray (например, iBoutletCollection). В этом случае значение применяется ко всем объектам в массиве.
Чтобы применить стиль, объявленный в Plist к объекту, просто используйте следующую строку кода:
[[SDThemeManager sharedManager] applyStyleWithName:@"NomeStile" toObject:object];
Указанный объект также может быть самостоятельно .
Библиотека содержит категорию NSOBject+TheMemanager , которая разоблачает метод:
- (void) applyThemeValue:(id)value forKeyPath:(NSString*)keyPath;
Этот метод переопределен категориями некоторых подклассов, чтобы особо обрабатывать несколько свойств. Эти категории всегда включены в библиотеку Sysdata. Например. Uitextfield+Thememanager управляет фальшивым имуществом Placeholdercolor , чтобы использовать Atructuded Placeform Holder .
Категория NSOBject+TheMemanager объявляет протокол:
@protocol ThemeManagerCustomizationProtocol <NSObject>
@optional
- (BOOL) shouldApplyThemeCustomizationForKeyPath:(NSString*)keyPath;
- (void) applyCustomizationOfThemeValue:(id)value forKeyPath:(NSString*)keyPath;
@end
Методы этого протокола обеспечивают пользовательское управление свойствами за пределами самой библиотеки. Это единственные методы, которые необходимо использовать из библиотеки, чтобы избежать риска реализации ранее описанного метода.
Метод shouldApplyThemeCustomizationForKeyPath: должен вернуть YES только для клавиатуры, с которыми вы собираетесь справиться вручную.
Метод applyCustomizationOfThemeValue:forKeyPath: должен содержать пользовательскую реализацию для клавиатуры, принятых предыдущим методом.
Thememanager обязательно требует темы по умолчанию , и, опционально, один или несколько альтернативных стилей может быть указан методом:
- (void) setAlternativeThemes:(NSArray*)alternativeThemes
Прошлый массив должен содержать имена файлов PLIST альтернативных тем. Когда вы пытаетесь применить стиль, Thememanager ищет его в первой альтернативной теме. Если вы не найдете его во втором и так далее. Если ни одна из альтернативных тем не содержит указанного стиля, Thememanager ищет его в теме по умолчанию.
Порядок важен !!!
Версия 2 Thememanager обратно совместима. Чтобы справиться с ретросовместимостью со старыми форматами PLIST, новые должны быть обязательно содержать пару клавишных значений: “formatVersion” : 2
Следующие методы могут изменить тему и постоянные значения программным образом.
Измените значение постоянной программным способом.
- (void) modifyConstant:(NSString*)constant withValue:(id)value
Измените значение для стиля на данном пути программным способом.
- (void) modifyStlye:(NSString*)style forKeyPath:(NSString*)keyPath withValue:(id)value
ВНИМАНИЕ :
По умолчанию изменить стиль настройки некоторых клавиатур замените весь стиль в пакете только новыми клавиатурами. Если вы хотите приготовить все остальные значения клавиатуры, установленные в основных темах, активно проводите наследование
- (void) modifyStyle:(NSString*)style inheritanceEnable:(BOOL)inheritanceEnable
Чтобы сохранить все изменение программно, чтобы завоевать их также при следующем перезапуске приложения. В противном случае все изменения будут доступны для текущего сеанса.
- (void) synchronizeModifies
Для сброса всех изменений программно изменяет SET (используя ModifyConstant: withValue: или Modifystlye: forkeypath: withValue :)
- (void) resetModifies