|
@@ -7,7 +7,9 @@
|
|
|
|
|
|
import Foundation
|
|
|
|
|
|
-public class XCThemeSpec {
|
|
|
+@objc
|
|
|
+@objcMembers
|
|
|
+public class XCThemeSpec: NSObject {
|
|
|
|
|
|
public private(set) var themeId: String
|
|
|
public private(set) var originalDict: [String : Any]
|
|
@@ -17,6 +19,8 @@ public class XCThemeSpec {
|
|
|
self.interfaceStyle = .unspecified
|
|
|
self.themeId = themeId
|
|
|
self.originalDict = [:]
|
|
|
+ super.init()
|
|
|
+
|
|
|
if (themeId.contains("/") || themeId.contains("\\")) {
|
|
|
return nil
|
|
|
}
|
|
@@ -87,3 +91,30 @@ extension XCThemeSpec {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+fileprivate extension UIColor {
|
|
|
+
|
|
|
+ // Hex String -> UIColor
|
|
|
+ convenience init(hexString: String) {
|
|
|
+ let hexString = hexString.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
|
+ let scanner = Scanner(string: hexString)
|
|
|
+
|
|
|
+ if hexString.hasPrefix("#") {
|
|
|
+ scanner.scanLocation = 1
|
|
|
+ }
|
|
|
+
|
|
|
+ var color: UInt32 = 0
|
|
|
+ scanner.scanHexInt32(&color)
|
|
|
+
|
|
|
+ let mask = 0x000000FF
|
|
|
+ let r = Int(color >> 16) & mask
|
|
|
+ let g = Int(color >> 8) & mask
|
|
|
+ let b = Int(color) & mask
|
|
|
+
|
|
|
+ let red = CGFloat(r) / 255.0
|
|
|
+ let green = CGFloat(g) / 255.0
|
|
|
+ let blue = CGFloat(b) / 255.0
|
|
|
+
|
|
|
+ self.init(red: red, green: green, blue: blue, alpha: 1)
|
|
|
+ }
|
|
|
+}
|