Jenis dasar untuk bertema aplikasi.
Costumekit terbuat dari satu set protokol cepat. Mereka dimaksudkan untuk diimplementasikan oleh Anda di aplikasi Anda.
Ditampilkan di Little Bites of Cocoa Bite #270: Menerapkan Tema dengan Costumekit
Termasuk protokol Color dan ColorPalette .
Penggunaan:
public enum MyAppColors : Color , ColorPalette {
case white = " FFFFFF "
case lightTeal = " 3CB39E "
case forestGreen = " 216055 "
case black = " 000000 "
} Termasuk protokol Font , dan satu implementasi SystemFont beton untuk font sistem iOS .
Penggunaan:
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 ) !
}
} Termasuk tipe protokol SVG dan SVGMetadata .
Penggunaan:
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 )
}
}
} Apa yang Anda lakukan dengan SVGMetadata terserah Anda. Saya merekomendasikan Swiftsvg dari Michael Choe. Baca lebih lanjut di sini untuk mempelajari cara menggunakannya.
Tujuan Costumekit adalah menjadi solusi generik, jadi tidak ada asumsi yang dibuat tentang bagaimana sesuatu harus diambil dari disk, diuraikan, dll. Anda harus menerapkannya, jadi tidak ada yang dipaksakan pada Anda.
Termasuk protokol Costume . Penggunaan:
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 ( ) { }
}Bersulang.