Базовые типы для тематического приложения.
COSTUMEKIT состоит из набора быстрых протоколов. Они предназначены для реализации вами в вашем приложении.
Показаны в маленьких кусочках Cocoa Bite #270: внедрение тематических с помощью Costumekit
Включает Color и ColorPalette протоколы.
Использование:
public enum MyAppColors : Color , ColorPalette {
case white = " FFFFFF "
case lightTeal = " 3CB39E "
case forestGreen = " 216055 "
case black = " 000000 "
} Включает протокол Font и одну конкретную реализацию SystemFont для системных шрифтов iOS .
Использование:
public struct MyAppFont : Font {
public init ( size : FontSize = . textStyle ( . body ) ) {
self . size = size
}
// Font
public var size : FontSize
// FontConvertible
public var FontValue : UIFont {
return UIFont ( name : " SomeCustomFont " , size : pointSize ) !
}
} Включает протокол SVG и тип SVGMetadata .
Использование:
enum MyAppSVGs {
case clockGlyph
case bird
}
extension MyAppSVGs : SVG {
public func metadata ( ) -> SVGMetadata {
switch self {
case . clockGlyph : return SVGMetadata ( name : " clock " , size : CGSize ( width : 100 , height : 100 ) , fullColor : false )
case . bird : return SVGMetadata ( name : " bird " , size : CGSize ( width : 58 , height : 28 ) , fullColor : true )
}
}
} То, что вы делаете с SVGMetadata зависит от вас. Я рекомендую Swiftsvg от Майкла Чо. Читайте больше здесь, чтобы узнать, как его использовать.
Цели Costumekit - это общее решение, поэтому никаких предположений о том, как что -то следует извлечь из диска, разбора и т. Д. Вам нужно в любом случае реализовать их, поэтому для вас ничего не навязывается.
Включает протокол Costume . Использование:
open class MyAppCostume : Costume {
let spacing = CGFloat ( 8 )
public func wearRootBackground ( _ view : UIView ) {
view . backgroundColor = Color . black . colorValue
}
public func wearHeadline ( _ label : UILabel ) {
label . font = MyAppFont ( size : . textStyle ( . title1 ) ) . fontValue
label . textColor = MyAppColors . forestGreen . colorValue
}
public var name : String { return " Default " }
public var description : String { return " The default costume. " }
public init ( ) { }
}Ваше здоровье.