From 632ecb15af7d152872d37ab2d1ef0b31dd4a4cf9 Mon Sep 17 00:00:00 2001 From: Pedro Farina Date: Tue, 28 May 2019 14:56:10 -0300 Subject: [PATCH 1/4] Bronze --- .../UserInterfaceState.xcuserstate | Bin 0 -> 20470 bytes .../xcschemes/xcschememanagement.plist | 14 ++++ CustomView/Base.lproj/Main.storyboard | 74 +++++++++++++++++- .../ProgressCircleViewController.swift | 36 ++++++--- 4 files changed, 112 insertions(+), 12 deletions(-) create mode 100644 CustomView.xcodeproj/project.xcworkspace/xcuserdata/pedrogiulianofarina.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 CustomView.xcodeproj/xcuserdata/pedrogiulianofarina.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/CustomView.xcodeproj/project.xcworkspace/xcuserdata/pedrogiulianofarina.xcuserdatad/UserInterfaceState.xcuserstate b/CustomView.xcodeproj/project.xcworkspace/xcuserdata/pedrogiulianofarina.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..0335d807ef974873bd30717039641186d283f06f GIT binary patch literal 20470 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 gIZ6< + + + + SchemeUserState + + CustomView.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/CustomView/Base.lproj/Main.storyboard b/CustomView/Base.lproj/Main.storyboard index 4b8cb5b..5bb6a13 100644 --- a/CustomView/Base.lproj/Main.storyboard +++ b/CustomView/Base.lproj/Main.storyboard @@ -55,7 +55,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -67,7 +133,7 @@ - + @@ -205,15 +271,17 @@ - + + + - + diff --git a/CustomView/Controllers/ProgressCircleViewController.swift b/CustomView/Controllers/ProgressCircleViewController.swift index 266ef60..1a61b86 100644 --- a/CustomView/Controllers/ProgressCircleViewController.swift +++ b/CustomView/Controllers/ProgressCircleViewController.swift @@ -9,8 +9,8 @@ import UIKit class ProgressCircleViewController: UITableViewController { - - @IBOutlet weak var progressCircleView: ProgressCircleView? + @IBOutlet var progressViews: [ProgressCircleView]! + @IBOutlet weak var widthSlider: UISlider! @IBOutlet weak var progressSlider: UISlider! @IBOutlet weak var targetSlider: UISlider! @@ -18,27 +18,45 @@ class ProgressCircleViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() - self.progressCircleView?.circleWidth = CGFloat(self.widthSlider.value) - self.progressCircleView?.progressValue = CGFloat(self.progressSlider.value) - self.progressCircleView?.targetValue = CGFloat(self.targetSlider.value) + setValues(width: CGFloat(self.widthSlider.value), progress: CGFloat(self.progressSlider.value), target: CGFloat(self.targetSlider.value)) } override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) - self.progressCircleView?.setNeedsDisplay() + for view in progressViews{ + view.setNeedsDisplay() + } } @IBAction func widthChange(_ sender: Any) { - self.progressCircleView?.circleWidth = CGFloat(self.widthSlider.value) + setValues(width: CGFloat(self.widthSlider.value), progress: nil, target: nil) } @IBAction func progessChange(_ sender: Any) { - self.progressCircleView?.progressValue = CGFloat(self.progressSlider.value) + setValues(width: nil, progress: CGFloat(self.progressSlider.value), target: nil) } @IBAction func targetChange(_ sender: Any) { - self.progressCircleView?.targetValue = CGFloat(self.targetSlider.value) + setValues(width: nil, progress: nil, target: CGFloat(self.targetSlider.value)) + } + + func setValues(width:CGFloat?, progress:CGFloat?, target:CGFloat?){ + if let width = width{ + for view in progressViews{ + view.circleWidth = width + } + } + if let progress = progress{ + for view in progressViews{ + view.progressValue = progress + } + } + if let target = target{ + for view in progressViews{ + view.targetValue = target + } + } } } From 59d96441043658e9d9205c082de7d3998225ce3b Mon Sep 17 00:00:00 2001 From: Pedro Farina Date: Tue, 28 May 2019 15:22:28 -0300 Subject: [PATCH 2/4] Prata - Color --- .../UserInterfaceState.xcuserstate | Bin 20470 -> 25710 bytes CustomView/Base.lproj/Main.storyboard | 162 ++++++++++++++++++ .../ProgressCircleViewController.swift | 47 +++-- CustomView/Views/ProgressBarView.swift | 20 ++- CustomView/Views/ProgressCircleView.swift | 18 +- 5 files changed, 230 insertions(+), 17 deletions(-) diff --git a/CustomView.xcodeproj/project.xcworkspace/xcuserdata/pedrogiulianofarina.xcuserdatad/UserInterfaceState.xcuserstate b/CustomView.xcodeproj/project.xcworkspace/xcuserdata/pedrogiulianofarina.xcuserdatad/UserInterfaceState.xcuserstate index 0335d807ef974873bd30717039641186d283f06f..eeda8bb46c5bbe46d7f0d2973533785538a8292d 100644 GIT binary patch delta 12657 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

>$rikU%jzu+tJIz(knL&gf{M0oq|7 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 SeF1_{{clm*C+m_vvi|{^xWQNe delta 8875 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 diff --git a/CustomView/Base.lproj/Main.storyboard b/CustomView/Base.lproj/Main.storyboard index 5bb6a13..e19e2ec 100644 --- a/CustomView/Base.lproj/Main.storyboard +++ b/CustomView/Base.lproj/Main.storyboard @@ -263,6 +263,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -280,6 +412,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CustomView/Controllers/ProgressCircleViewController.swift b/CustomView/Controllers/ProgressCircleViewController.swift index 1a61b86..b662ef7 100644 --- a/CustomView/Controllers/ProgressCircleViewController.swift +++ b/CustomView/Controllers/ProgressCircleViewController.swift @@ -24,39 +24,64 @@ class ProgressCircleViewController: UITableViewController { override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) - for view in progressViews{ - view.setNeedsDisplay() + for chart in progressViews{ + chart.setNeedsDisplay() } } @IBAction func widthChange(_ sender: Any) { - setValues(width: CGFloat(self.widthSlider.value), progress: nil, target: nil) + setValues(width: CGFloat(self.widthSlider.value)) } @IBAction func progessChange(_ sender: Any) { - setValues(width: nil, progress: CGFloat(self.progressSlider.value), target: nil) + setValues(progress: CGFloat(self.progressSlider.value)) } @IBAction func targetChange(_ sender: Any) { - setValues(width: nil, progress: nil, target: CGFloat(self.targetSlider.value)) + setValues(target: CGFloat(self.targetSlider.value)) } + + + func setValues(width:CGFloat){ + setValues(width: width, progress: nil, target: nil) + } + + func setValues(progress:CGFloat){ + setValues(width: nil, progress: progress, target: nil) + } + + func setValues(target:CGFloat){ + setValues(width: nil, progress: nil, target: target) + } func setValues(width:CGFloat?, progress:CGFloat?, target:CGFloat?){ if let width = width{ - for view in progressViews{ - view.circleWidth = width + for chart in progressViews{ + chart.circleWidth = width } } if let progress = progress{ - for view in progressViews{ - view.progressValue = progress + for chart in progressViews{ + chart.progressValue = progress } } if let target = target{ - for view in progressViews{ - view.targetValue = target + for chart in progressViews{ + chart.targetValue = target } } } + + @IBAction func tapTargetOccur(_ sender : UITapGestureRecognizer){ + for chart in progressViews{ + chart.targetColor = sender.view?.backgroundColor ?? .gray + } + } + + @IBAction func tapProgressOccur(_ sender : UITapGestureRecognizer){ + for chart in progressViews{ + chart.progressColor = sender.view?.backgroundColor ?? .red + } + } } diff --git a/CustomView/Views/ProgressBarView.swift b/CustomView/Views/ProgressBarView.swift index bfe9f6a..56ecd91 100644 --- a/CustomView/Views/ProgressBarView.swift +++ b/CustomView/Views/ProgressBarView.swift @@ -32,11 +32,25 @@ class ProgressBarView: UIView { } @IBInspectable - var lineColor:UIColor = UIColor.black + var lineColor:UIColor = UIColor.black{ + didSet{ + setNeedsDisplay() + } + } + @IBInspectable - var targetColor:UIColor = UIColor.blue + var targetColor:UIColor = UIColor.blue{ + didSet{ + setNeedsDisplay() + } + } + @IBInspectable - var progressColor:UIColor = UIColor.yellow + var progressColor:UIColor = UIColor.yellow{ + didSet{ + setNeedsDisplay() + } + } override func draw(_ rect: CGRect) { diff --git a/CustomView/Views/ProgressCircleView.swift b/CustomView/Views/ProgressCircleView.swift index 9eb1956..a0e62b1 100644 --- a/CustomView/Views/ProgressCircleView.swift +++ b/CustomView/Views/ProgressCircleView.swift @@ -38,13 +38,25 @@ class ProgressCircleView: UIView { } @IBInspectable - var circleColor:UIColor = UIColor.black + var circleColor:UIColor = UIColor.black{ + didSet{ + setNeedsDisplay() + } + } @IBInspectable - var progressColor:UIColor = UIColor.yellow + var progressColor:UIColor = UIColor.yellow{ + didSet{ + setNeedsDisplay() + } + } @IBInspectable - var targetColor:UIColor = UIColor.green + var targetColor:UIColor = UIColor.green{ + didSet{ + setNeedsDisplay() + } + } // Method that draw the circle, progress and target override func draw(_ rect: CGRect) { From e97acad60cb7f570623f43dd71216217dbdab33d Mon Sep 17 00:00:00 2001 From: Pedro Farina Date: Tue, 28 May 2019 15:32:57 -0300 Subject: [PATCH 3/4] Prata - Color Bar --- .../UserInterfaceState.xcuserstate | Bin 25710 -> 25708 bytes CustomView/Base.lproj/Main.storyboard | 162 ++++++++++++++++++ .../ProgressBarViewController.swift | 8 + 3 files changed, 170 insertions(+) diff --git a/CustomView.xcodeproj/project.xcworkspace/xcuserdata/pedrogiulianofarina.xcuserdatad/UserInterfaceState.xcuserstate b/CustomView.xcodeproj/project.xcworkspace/xcuserdata/pedrogiulianofarina.xcuserdatad/UserInterfaceState.xcuserstate index eeda8bb46c5bbe46d7f0d2973533785538a8292d..43fe735d3af9b28cda1ee9eded1b66d7f3343f5f 100644 GIT binary patch delta 10193 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 delta 9804 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 AQ~&?~ diff --git a/CustomView/Base.lproj/Main.storyboard b/CustomView/Base.lproj/Main.storyboard index e19e2ec..e3334d4 100644 --- a/CustomView/Base.lproj/Main.storyboard +++ b/CustomView/Base.lproj/Main.storyboard @@ -615,6 +615,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -630,6 +762,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CustomView/Controllers/ProgressBarViewController.swift b/CustomView/Controllers/ProgressBarViewController.swift index 7c56694..94fbd9b 100644 --- a/CustomView/Controllers/ProgressBarViewController.swift +++ b/CustomView/Controllers/ProgressBarViewController.swift @@ -40,5 +40,13 @@ class ProgressBarViewController: UITableViewController { @IBAction func targetChange(_ sender: Any) { self.progressBarView?.targetValue = CGFloat(self.targetSlider.value) } + + @IBAction func tapTargetOccur(_ sender:UITapGestureRecognizer){ + self.progressBarView?.targetColor = sender.view?.backgroundColor ?? .gray + } + + @IBAction func tapProgressOccur(_ sender:UITapGestureRecognizer){ + self.progressBarView?.progressColor = sender.view?.backgroundColor ?? .red + } } From c5fa530439eeeb527ecc244cba88fa82a6f2f297 Mon Sep 17 00:00:00 2001 From: Pedro Farina Date: Tue, 28 May 2019 18:39:36 -0300 Subject: [PATCH 4/4] Parata - Percentages --- .../UserInterfaceState.xcuserstate | Bin 25708 -> 25450 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 ++++ CustomView/Base.lproj/Main.storyboard | 2 ++ CustomView/Views/ProgressBarView.swift | 23 ++++++++++++++++++ CustomView/Views/ProgressCircleView.swift | 23 ++++++++++++++++++ 5 files changed, 53 insertions(+) create mode 100644 CustomView.xcodeproj/xcuserdata/pedrogiulianofarina.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/CustomView.xcodeproj/project.xcworkspace/xcuserdata/pedrogiulianofarina.xcuserdatad/UserInterfaceState.xcuserstate b/CustomView.xcodeproj/project.xcworkspace/xcuserdata/pedrogiulianofarina.xcuserdatad/UserInterfaceState.xcuserstate index 43fe735d3af9b28cda1ee9eded1b66d7f3343f5f..87b3e886f61d30f4b28f374afa37a060d83d90dd 100644 GIT binary patch delta 10609 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 + + diff --git a/CustomView/Base.lproj/Main.storyboard b/CustomView/Base.lproj/Main.storyboard index e3334d4..f37ac66 100644 --- a/CustomView/Base.lproj/Main.storyboard +++ b/CustomView/Base.lproj/Main.storyboard @@ -141,6 +141,7 @@ + @@ -493,6 +494,7 @@ + diff --git a/CustomView/Views/ProgressBarView.swift b/CustomView/Views/ProgressBarView.swift index 56ecd91..7935ec3 100644 --- a/CustomView/Views/ProgressBarView.swift +++ b/CustomView/Views/ProgressBarView.swift @@ -10,6 +10,27 @@ import UIKit @IBDesignable class ProgressBarView: UIView { + private var lblProgressPercentage:UILabel = UILabel(frame: CGRect(x: 15, y: 10, width: 60, height: 25)) + private var lblTargetPercentage:UILabel = UILabel(frame: CGRect(x: 15, y: 35, width: 60, height: 25)) + private func setPercentage(){ + lblTargetPercentage.text = "\(String(format:"%.1f", targetValue * 100))%" + lblProgressPercentage.text = "\(String(format:"%.1f", progressValue/targetValue * 100))%" + } + + @IBInspectable + var showPercentage:Bool = false{ + didSet{ + if showPercentage{ + addSubview(lblProgressPercentage) + addSubview(lblTargetPercentage) + } + else{ + lblProgressPercentage.removeFromSuperview() + lblTargetPercentage.removeFromSuperview() + } + } + } + @IBInspectable var lineWidth:CGFloat = 10.0 { didSet{ @@ -20,6 +41,7 @@ class ProgressBarView: UIView { @IBInspectable var targetValue:CGFloat = 0.25 { didSet{ + setPercentage() setNeedsDisplay() } } @@ -27,6 +49,7 @@ class ProgressBarView: UIView { @IBInspectable var progressValue:CGFloat = 0.0 { didSet{ + setPercentage() setNeedsDisplay() } } diff --git a/CustomView/Views/ProgressCircleView.swift b/CustomView/Views/ProgressCircleView.swift index a0e62b1..ed99a37 100644 --- a/CustomView/Views/ProgressCircleView.swift +++ b/CustomView/Views/ProgressCircleView.swift @@ -13,11 +13,33 @@ import UIKit @IBDesignable class ProgressCircleView: UIView { + private var lblProgressPercentage:UILabel = UILabel(frame: CGRect(x: 15, y: 10, width: 60, height: 25)) + private var lblTargetPercentage:UILabel = UILabel(frame: CGRect(x: 15, y: 35, width: 60, height: 25)) + private func setPercentage(){ + lblTargetPercentage.text = "\(String(format:"%.1f", targetValue * 100))%" + lblProgressPercentage.text = "\(String(format:"%.1f", progressValue/targetValue * 100))%" + } + + @IBInspectable + var showPercentage:Bool = false{ + didSet{ + if showPercentage{ + addSubview(lblProgressPercentage) + addSubview(lblTargetPercentage) + } + else{ + lblProgressPercentage.removeFromSuperview() + lblTargetPercentage.removeFromSuperview() + } + } + } + @IBInspectable // The value of current progress between 0.0 and 1.0 var progressValue:CGFloat = 0.0 { didSet{ + setPercentage() setNeedsDisplay() } } @@ -26,6 +48,7 @@ class ProgressCircleView: UIView { // TargetValue is a value between 0.0 and 1.0 that represent the value to be archieved var targetValue:CGFloat = 0.75 { didSet{ + setPercentage() setNeedsDisplay() } }