From a533f7dd716dd8e059b0e365e72867a9b6fb77a9 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Mon, 14 Jan 2019 01:45:39 +0400 Subject: [PATCH] Added hex string initializer for UIColor --- Display/ListView.swift | 2 +- Display/UIKitUtils.swift | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Display/ListView.swift b/Display/ListView.swift index 96a3ed2bcf..1a4de39219 100644 --- a/Display/ListView.swift +++ b/Display/ListView.swift @@ -2349,7 +2349,7 @@ open class ListView: ASDisplayNode, UIScrollViewDelegate, UIGestureRecognizerDel var headerNodesTransition: (ContainedViewLayoutTransition, Bool, CGFloat) = (.immediate, false, 0.0) if let updateSizeAndInsets = updateSizeAndInsets { - if self.insets != updateSizeAndInsets.insets || !self.visibleSize.height.isEqual(to: updateSizeAndInsets.size.height) { + if self.insets != updateSizeAndInsets.insets || self.headerInsets != updateSizeAndInsets.headerInsets || !self.visibleSize.height.isEqual(to: updateSizeAndInsets.size.height) { let previousVisibleSize = self.visibleSize self.visibleSize = updateSizeAndInsets.size diff --git a/Display/UIKitUtils.swift b/Display/UIKitUtils.swift index ef2b94fb27..ea820e5d37 100644 --- a/Display/UIKitUtils.swift +++ b/Display/UIKitUtils.swift @@ -51,6 +51,19 @@ public extension UIColor { self.init(red: CGFloat((argb >> 16) & 0xff) / 255.0, green: CGFloat((argb >> 8) & 0xff) / 255.0, blue: CGFloat(argb & 0xff) / 255.0, alpha: CGFloat((argb >> 24) & 0xff) / 255.0) } + convenience init?(hexString: String) { + let scanner = Scanner(string: hexString) + if hexString.hasPrefix("#") { + scanner.scanLocation = 1 + } + var num: UInt32 = 0 + if scanner.scanHexInt32(&num) { + self.init(rgb: num) + } else { + return nil + } + } + var alpha: CGFloat { var alpha: CGFloat = 0.0 if self.getRed(nil, green: nil, blue: nil, alpha: &alpha) { @@ -62,6 +75,15 @@ public extension UIColor { } } + var rgb: UInt32 { + var red: CGFloat = 0.0 + var green: CGFloat = 0.0 + var blue: CGFloat = 0.0 + self.getRed(&red, green: &green, blue: &blue, alpha: nil) + + return (UInt32(red * 255.0) << 16) | (UInt32(green * 255.0) << 8) | (UInt32(blue * 255.0)) + } + var argb: UInt32 { var red: CGFloat = 0.0 var green: CGFloat = 0.0