From 53646745206fd6064c7bf18571456239735f1a9f Mon Sep 17 00:00:00 2001 From: Dale Webster Date: Fri, 24 Feb 2017 12:39:20 +0000 Subject: [PATCH 1/3] Added a synchronous image download if the image argument is a valid URL --- .../Resolvers/ImageViewPropertyResolver.swift | 14 +++++++++++++- Podfile.lock | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/EverLayout/Resolvers/ImageViewPropertyResolver.swift b/EverLayout/Resolvers/ImageViewPropertyResolver.swift index 81dd1a2..dbaac44 100644 --- a/EverLayout/Resolvers/ImageViewPropertyResolver.swift +++ b/EverLayout/Resolvers/ImageViewPropertyResolver.swift @@ -39,7 +39,19 @@ public class ImageViewPropertyResolver: PropertyResolver static func image (source : String) -> UIImage? { - return UIImage(named: source) + // Try loading the image from an asset + var image = UIImage(named: source) + + if image == nil { + // Attempt to load this image as a url + if let imageUrl = URL(string: source) { + if let imageData = NSData(contentsOf: imageUrl) { + image = UIImage(data: imageData as Data) + } + } + } + + return image } } diff --git a/Podfile.lock b/Podfile.lock index ec3049c..52e7d58 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -7,6 +7,6 @@ DEPENDENCIES: SPEC CHECKSUMS: Socket.IO-Client-Swift: 900cf511777045c80d1ce1f11f71261e87765dd1 -PODFILE CHECKSUM: 83ea6e5016c26b9a778d1ae57c7d123c347e10ee +PODFILE CHECKSUM: c81d7c93c2b79f2277a7ebb3b559d9b9e3f858ea COCOAPODS: 1.2.0.beta.1 From f24dfbb78dc186178248ad67d73c794bca428003 Mon Sep 17 00:00:00 2001 From: Dale Webster Date: Fri, 24 Feb 2017 15:30:13 +0000 Subject: [PATCH 2/3] Removed deprecated build function --- EverLayout/EverLayoutBridge.swift | 4 ++-- EverLayout/Model/EverLayout.swift | 21 --------------------- 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/EverLayout/EverLayoutBridge.swift b/EverLayout/EverLayoutBridge.swift index 32a97b1..5742d28 100644 --- a/EverLayout/EverLayoutBridge.swift +++ b/EverLayout/EverLayoutBridge.swift @@ -51,7 +51,7 @@ public class EverLayoutBridge: NSObject { let layoutName : NSString = layoutName as NSString - if let rawData = layoutData.getRawData() + if let rawData = layoutData.rawData as? Data { self.postLayoutUpdate(layoutName: layoutName.deletingPathExtension, layoutData: rawData) } @@ -90,5 +90,5 @@ public class EverLayoutBridge: NSObject self.socket?.emit("report", [ "message":message ]) - } + } } diff --git a/EverLayout/Model/EverLayout.swift b/EverLayout/Model/EverLayout.swift index 34137b3..e73eec8 100644 --- a/EverLayout/Model/EverLayout.swift +++ b/EverLayout/Model/EverLayout.swift @@ -83,27 +83,6 @@ open class EverLayout: ELRawData return EverLayout(layoutData: layoutData, layoutIndexParser: self.indexParser) } - /// Similar to building a full layout, this will begin the process of building a sublayout on the passed view - /// - /// - Parameters: - /// - name: Name of sublayout to load - /// - view: The root view to build this layout on - /// - host: An optional object which contains the properties referenced in this layout - /// - data: An optional dictionary of data to inject into this sublayout -// public func buildSubLayout (_ name : String , onView view : UIView , host : NSObject? = nil , data : [String : String]? = nil) -// { -// guard var sublayout = self.sublayouts?[name] else { return } -// -// // Inject data into the sublayout -// if var sublayout = sublayout as? Data , let data = data -// { -// sublayout = self._injectDataIntoLayout(data: data, layoutData: sublayout)! -// } -// -// // Build! -// EverLayoutBuilder.buildLayout(sublayout, onView: view, host: host) -// } - /// Set data to be injected when the layout is built /// /// - Parameter data: Dictionary of key-values for variables in the layout From bf166e6ed360eb6f80ae053bdfa9f083101b93fc Mon Sep 17 00:00:00 2001 From: Dale Webster Date: Fri, 24 Feb 2017 16:29:15 +0000 Subject: [PATCH 3/3] Cleaned EverLayoutBridge class --- EverLayout/EverLayoutBridge.swift | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/EverLayout/EverLayoutBridge.swift b/EverLayout/EverLayoutBridge.swift index 5742d28..5d1ef09 100644 --- a/EverLayout/EverLayoutBridge.swift +++ b/EverLayout/EverLayoutBridge.swift @@ -26,6 +26,7 @@ import SocketIO public class EverLayoutBridge: NSObject { static var socket : SocketIOClient? + private static let DEFAULT_IP : String = "http://localhost" private static let DEFAULT_PORT : String = "3000" @@ -65,8 +66,7 @@ public class EverLayoutBridge: NSObject /// /// - Parameter data: raw data /// - Returns: JSON Data - private static func parseData (_ data : [Any]) -> JSON - { + private static func parseData (_ data : [Any]) -> JSON { return JSON(data.first as Any) } @@ -75,8 +75,7 @@ public class EverLayoutBridge: NSObject /// - Parameters: /// - layoutName: Name of the layout that has been updated /// - layoutData: The new layout data - private static func postLayoutUpdate (layoutName : String , layoutData : Data) - { + private static func postLayoutUpdate (layoutName : String , layoutData : Data) { let notificationName : Notification.Name = Notification.Name("layout-update__\(layoutName)") NotificationCenter.default.post(name: notificationName, object: layoutData) @@ -85,10 +84,9 @@ public class EverLayoutBridge: NSObject /// Report a message to the bridge /// /// - Parameter message: message to report - public static func sendReport (message : String) - { + public static func sendReport (message : String) { self.socket?.emit("report", [ "message":message ]) - } + } }