From 781e645be0f52c99264ceb7ddf7c87f7839759ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Mergulha=CC=83o?= Date: Wed, 3 Jan 2018 16:54:07 -0200 Subject: [PATCH] Ambience customization --- Ambience/Classes/AmbienceLabel.swift | 23 ++++++- Ambience/Classes/AmbienceObject.swift | 68 +++++++++++++------ .../AmbienceViews/UIButton+Ambience.swift | 7 +- .../AmbienceViews/UILabel+Ambience.swift | 2 +- .../UINavigationBar+Ambience.swift | 2 +- .../AmbienceViews/UISearchBar+Ambience.swift | 2 +- .../AmbienceViews/UITabBar+Ambience.swift | 2 +- .../AmbienceViews/UITextView+Ambience.swift | 2 +- .../AmbienceViews/UIView+Ambience.swift | 2 +- 9 files changed, 77 insertions(+), 33 deletions(-) diff --git a/Ambience/Classes/AmbienceLabel.swift b/Ambience/Classes/AmbienceLabel.swift index 0a33ed4..2c13b81 100644 --- a/Ambience/Classes/AmbienceLabel.swift +++ b/Ambience/Classes/AmbienceLabel.swift @@ -9,6 +9,11 @@ import UIKit public class AmbienceLabel : UILabel { + @IBInspectable var contrastLabel : String? + @IBInspectable var invertLabel : String? + @IBInspectable var regularLabel : String? + @IBInspectable var autoLabel : String? + override public func ambience(_ notification: Notification) { super.ambience(notification) @@ -20,9 +25,21 @@ public class AmbienceLabel : UILabel { let aditionalText = Ambience.forcedState == nil ? "" : " (Forced)" switch currentState { - case .contrast: return "Contrast" + aditionalText - case .invert: return "Invert" + aditionalText - case .regular: return "Regular" + aditionalText + case .contrast: + if let label = contrastLabel { + return label + } + return "Contrast" + aditionalText + case .invert: + if let label = invertLabel { + return label + } + return "Invert" + aditionalText + case .regular: + if let label = regularLabel { + return label + } + return "Regular" + aditionalText } }() } diff --git a/Ambience/Classes/AmbienceObject.swift b/Ambience/Classes/AmbienceObject.swift index 24b5339..51d8404 100644 --- a/Ambience/Classes/AmbienceObject.swift +++ b/Ambience/Classes/AmbienceObject.swift @@ -9,36 +9,64 @@ import UIKit class AmbienceObject : NSObject { + @IBInspectable var invertAvailable : Bool = true + @IBInspectable var invertLabel : String = "Invert" + + @IBInspectable var regularAvailable : Bool = true + @IBInspectable var regularLabel : String = "Regular" + + @IBInspectable var contrastAvailable : Bool = true + @IBInspectable var contrastLabel : String = "Contrast" + + @IBInspectable var autoAvailable : Bool = true + @IBInspectable var autoLabel : String = "Auto" + @IBOutlet weak var viewController : UIViewController? @IBAction func switchAmbience (_ sender : AnyObject) { let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) - let switchToInvert = UIAlertAction(title: "Invert", style: .default) { - _ in - Ambience.forcedState = .invert - } - let switchToContrast = UIAlertAction(title: "Contrast", style: .default) { - _ in - Ambience.forcedState = .contrast - } - let switchToRegular = UIAlertAction(title: "Regular", style: .default) { - _ in - Ambience.forcedState = .regular + if invertAvailable { + + let action = UIAlertAction(title: invertLabel, style: .default) { + _ in + Ambience.forcedState = .invert + } + + actionSheet.addAction(action) } - let switchToAuto = UIAlertAction(title: "Auto", style: .default) { - _ in - Ambience.forcedState = nil + if contrastAvailable { + + let action = UIAlertAction(title: contrastLabel, style: .default) { + _ in + Ambience.forcedState = .contrast + } + + actionSheet.addAction(action) } - let cancel = UIAlertAction(title: "Cancel", style: .cancel) + if regularAvailable { + + let action = UIAlertAction(title: regularLabel, style: .default) { + _ in + Ambience.forcedState = .regular + } + + actionSheet.addAction(action) + } - actionSheet.addAction(switchToInvert) - actionSheet.addAction(switchToContrast) - actionSheet.addAction(switchToRegular) - actionSheet.addAction(switchToAuto) - actionSheet.addAction(cancel) + if autoAvailable { + + let action = UIAlertAction(title: autoLabel, style: .default) { + _ in + Ambience.forcedState = nil + } + + actionSheet.addAction(action) + } + + actionSheet.addAction(UIAlertAction(title: "Cancel", style: .cancel)) viewController?.present(actionSheet, animated: true) } diff --git a/Ambience/Classes/AmbienceViews/UIButton+Ambience.swift b/Ambience/Classes/AmbienceViews/UIButton+Ambience.swift index 8d5c577..30df024 100644 --- a/Ambience/Classes/AmbienceViews/UIButton+Ambience.swift +++ b/Ambience/Classes/AmbienceViews/UIButton+Ambience.swift @@ -42,14 +42,14 @@ extension UIButton { return value } - self.textColorRegular = self.tintColor ?? .black + self.textColorRegular = self.titleColor(for: .normal) ?? .black return self.textColorRegular } set { objc_setAssociatedObject(self, &KeyValues.regular.textColor, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } - public override func ambience(_ notification : Notification) { + open override func ambience(_ notification : Notification) { super.ambience(notification) @@ -66,7 +66,6 @@ extension UIButton { }() ?? self.tintColor self.setTitleColor(color, for: .normal) - self.tintColor = color } else { @@ -80,8 +79,8 @@ extension UIButton { }() ?? self.tintColor self.setTitleColor(color, for: .normal) - self.tintColor = color } } } } + diff --git a/Ambience/Classes/AmbienceViews/UILabel+Ambience.swift b/Ambience/Classes/AmbienceViews/UILabel+Ambience.swift index d8f2a47..111c1bc 100644 --- a/Ambience/Classes/AmbienceViews/UILabel+Ambience.swift +++ b/Ambience/Classes/AmbienceViews/UILabel+Ambience.swift @@ -49,7 +49,7 @@ extension UILabel { set { objc_setAssociatedObject(self, &KeyValues.regular.textColor, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } - public override func ambience(_ notification : Notification) { + open override func ambience(_ notification : Notification) { super.ambience(notification) diff --git a/Ambience/Classes/AmbienceViews/UINavigationBar+Ambience.swift b/Ambience/Classes/AmbienceViews/UINavigationBar+Ambience.swift index 2bdaf35..c8653d5 100644 --- a/Ambience/Classes/AmbienceViews/UINavigationBar+Ambience.swift +++ b/Ambience/Classes/AmbienceViews/UINavigationBar+Ambience.swift @@ -9,7 +9,7 @@ import UIKit extension UINavigationBar { - public override func ambience(_ notification : Notification) { + open override func ambience(_ notification : Notification) { super.ambience(notification) diff --git a/Ambience/Classes/AmbienceViews/UISearchBar+Ambience.swift b/Ambience/Classes/AmbienceViews/UISearchBar+Ambience.swift index 2ca10fc..8f1f43f 100644 --- a/Ambience/Classes/AmbienceViews/UISearchBar+Ambience.swift +++ b/Ambience/Classes/AmbienceViews/UISearchBar+Ambience.swift @@ -9,7 +9,7 @@ import UIKit extension UITabBar { - public override func ambience(_ notification : Notification) { + open override func ambience(_ notification : Notification) { super.ambience(notification) diff --git a/Ambience/Classes/AmbienceViews/UITabBar+Ambience.swift b/Ambience/Classes/AmbienceViews/UITabBar+Ambience.swift index 1968485..51547d6 100644 --- a/Ambience/Classes/AmbienceViews/UITabBar+Ambience.swift +++ b/Ambience/Classes/AmbienceViews/UITabBar+Ambience.swift @@ -9,7 +9,7 @@ import UIKit extension UISearchBar { - public override func ambience(_ notification : Notification) { + open override func ambience(_ notification : Notification) { super.ambience(notification) diff --git a/Ambience/Classes/AmbienceViews/UITextView+Ambience.swift b/Ambience/Classes/AmbienceViews/UITextView+Ambience.swift index 0d24ca9..f6e35f3 100644 --- a/Ambience/Classes/AmbienceViews/UITextView+Ambience.swift +++ b/Ambience/Classes/AmbienceViews/UITextView+Ambience.swift @@ -48,7 +48,7 @@ extension UITextView { set { objc_setAssociatedObject(self, &KeyValues.regular.textColor, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } - public override func ambience(_ notification : Notification) { + open override func ambience(_ notification : Notification) { super.ambience(notification) diff --git a/Ambience/Classes/AmbienceViews/UIView+Ambience.swift b/Ambience/Classes/AmbienceViews/UIView+Ambience.swift index 17243c9..219f6c5 100644 --- a/Ambience/Classes/AmbienceViews/UIView+Ambience.swift +++ b/Ambience/Classes/AmbienceViews/UIView+Ambience.swift @@ -48,7 +48,7 @@ extension UIView { set { objc_setAssociatedObject(self, &KeyValues.regular.backgroundColor, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } - @objc override public func ambience(_ notification: Notification) { + @objc override open func ambience(_ notification: Notification) { super.ambience(notification)