From 3756cf72d8db1d7b462d75dd77b0667a1b5a9d48 Mon Sep 17 00:00:00 2001 From: iago salomon Date: Tue, 28 May 2019 16:24:48 -0300 Subject: [PATCH] prata --- CustomView.xcodeproj/project.pbxproj | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 25104 bytes .../xcschemes/xcschememanagement.plist | 14 + CustomView/Base.lproj/Main.storyboard | 686 +++++++++++++++++- .../CirclewWithLableTableViewController.swift | 63 ++ .../MultipleCirclesViewController.swift | 67 ++ .../ProgressBarViewController.swift | 10 + CustomView/Views/ProgressCircleView.swift | 18 +- 8 files changed, 861 insertions(+), 5 deletions(-) create mode 100644 CustomView.xcodeproj/project.xcworkspace/xcuserdata/iagosalomon.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 CustomView.xcodeproj/xcuserdata/iagosalomon.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 CustomView/Controllers/CirclewWithLableTableViewController.swift create mode 100644 CustomView/Controllers/MultipleCirclesViewController.swift diff --git a/CustomView.xcodeproj/project.pbxproj b/CustomView.xcodeproj/project.pbxproj index 73ab43a..a8a5231 100644 --- a/CustomView.xcodeproj/project.pbxproj +++ b/CustomView.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 7DAB894B229DAC7F00066A1C /* MultipleCirclesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DAB894A229DAC7F00066A1C /* MultipleCirclesViewController.swift */; }; + 7DAB894D229DAE9400066A1C /* CirclewWithLableTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DAB894C229DAE9400066A1C /* CirclewWithLableTableViewController.swift */; }; 92949A4D2295DAF3008EE240 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92949A4C2295DAF3008EE240 /* AppDelegate.swift */; }; 92949A4F2295DAF3008EE240 /* ProgressCircleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92949A4E2295DAF3008EE240 /* ProgressCircleViewController.swift */; }; 92949A522295DAF3008EE240 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 92949A502295DAF3008EE240 /* Main.storyboard */; }; @@ -18,6 +20,8 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 7DAB894A229DAC7F00066A1C /* MultipleCirclesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipleCirclesViewController.swift; sourceTree = ""; }; + 7DAB894C229DAE9400066A1C /* CirclewWithLableTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CirclewWithLableTableViewController.swift; sourceTree = ""; }; 92949A492295DAF3008EE240 /* CustomView.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CustomView.app; sourceTree = BUILT_PRODUCTS_DIR; }; 92949A4C2295DAF3008EE240 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 92949A4E2295DAF3008EE240 /* ProgressCircleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProgressCircleViewController.swift; sourceTree = ""; }; @@ -45,6 +49,8 @@ isa = PBXGroup; children = ( 92949A4E2295DAF3008EE240 /* ProgressCircleViewController.swift */, + 7DAB894C229DAE9400066A1C /* CirclewWithLableTableViewController.swift */, + 7DAB894A229DAC7F00066A1C /* MultipleCirclesViewController.swift */, 92FB2168229A55C5000AF93E /* ProgressBarViewController.swift */, ); path = Controllers; @@ -164,6 +170,8 @@ 92949A622295E067008EE240 /* ProgressBarView.swift in Sources */, 92FB2169229A55C5000AF93E /* ProgressBarViewController.swift in Sources */, 92949A602295DBF8008EE240 /* ProgressCircleView.swift in Sources */, + 7DAB894B229DAC7F00066A1C /* MultipleCirclesViewController.swift in Sources */, + 7DAB894D229DAE9400066A1C /* CirclewWithLableTableViewController.swift in Sources */, 92949A4D2295DAF3008EE240 /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/CustomView.xcodeproj/project.xcworkspace/xcuserdata/iagosalomon.xcuserdatad/UserInterfaceState.xcuserstate b/CustomView.xcodeproj/project.xcworkspace/xcuserdata/iagosalomon.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..ea5683371e9c9225fd2b822d58ac3f88500360fb GIT binary patch literal 25104 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 + + + + SchemeUserState + + CustomView.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/CustomView/Base.lproj/Main.storyboard b/CustomView/Base.lproj/Main.storyboard index 4b8cb5b..c5a39df 100644 --- a/CustomView/Base.lproj/Main.storyboard +++ b/CustomView/Base.lproj/Main.storyboard @@ -21,11 +21,13 @@ + + - + @@ -385,6 +387,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -401,7 +523,567 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CustomView/Controllers/CirclewWithLableTableViewController.swift b/CustomView/Controllers/CirclewWithLableTableViewController.swift new file mode 100644 index 0000000..e0b2611 --- /dev/null +++ b/CustomView/Controllers/CirclewWithLableTableViewController.swift @@ -0,0 +1,63 @@ +// +// CirclewWithLableTableViewController.swift +// CustomView +// +// Created by iago salomon on 28/05/19. +// Copyright © 2019 Joaquim Pessoa Filho. All rights reserved. +// + +import UIKit + +class CirclewWithLableTableViewController: UITableViewController { + + + @IBOutlet weak var progressCircleView: ProgressCircleView? + @IBOutlet weak var widthSlider: UISlider! + @IBOutlet weak var progressSlider: UISlider! + @IBOutlet weak var progressLabel: UILabel! + @IBOutlet weak var targetSlider: UISlider! + @IBOutlet weak var targetLabel: UILabel! + @IBOutlet weak var button: UIButton! + + 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) + + self.progressLabel.text = ("\(String(format: "%.2f",(CGFloat(self.progressSlider.value)*100)))%") + self.targetLabel.text = ("\(String(format: "%.2f",(CGFloat(self.targetSlider.value)*100)))%") + } + + override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { + super.viewWillTransition(to: size, with: coordinator) + + self.progressCircleView?.setNeedsDisplay() + } + + @IBAction func widthChange(_ sender: Any) { + self.progressCircleView?.circleWidth = CGFloat(self.widthSlider.value) + } + + @IBAction func progessChange(_ sender: Any) { + self.progressCircleView?.progressValue = CGFloat(self.progressSlider.value) + self.progressLabel.text = ("\(String(format: "%.2f",(CGFloat(self.progressSlider.value)*100)))%") + } + + @IBAction func targetChange(_ sender: Any) { + self.progressCircleView?.targetValue = CGFloat(self.targetSlider.value) + self.targetLabel.text = ("\(String(format: "%.2f",(CGFloat(self.targetSlider.value)*100)))%") + + } + + @IBAction func ChageprogressColor(_ sender: UIButton) { + self.progressCircleView?.progressColor = sender.backgroundColor ?? self.progressCircleView!.progressColor + + } + @IBAction func ChangeProgressColor(_ sender: UIButton) { + self.progressCircleView?.targetColor = sender.backgroundColor ?? self.progressCircleView!.targetColor + + } + +} diff --git a/CustomView/Controllers/MultipleCirclesViewController.swift b/CustomView/Controllers/MultipleCirclesViewController.swift new file mode 100644 index 0000000..208e1fa --- /dev/null +++ b/CustomView/Controllers/MultipleCirclesViewController.swift @@ -0,0 +1,67 @@ +// +// MultipleCirclesViewController.swift +// CustomView +// +// Created by iago salomon on 28/05/19. +// Copyright © 2019 Joaquim Pessoa Filho. All rights reserved. +// + +import UIKit + +class MultipleCirclesViewController: UITableViewController { + + @IBOutlet weak var progressCircleView: ProgressCircleView? + @IBOutlet weak var progressCircleView2: ProgressCircleView? + @IBOutlet weak var progressCircleView3: ProgressCircleView? + + @IBOutlet weak var widthSlider: UISlider! + @IBOutlet weak var progressSlider: UISlider! + @IBOutlet weak var targetSlider: UISlider! + + override func viewDidLoad() { + super.viewDidLoad() + //1 + self.progressCircleView?.circleWidth = CGFloat(self.widthSlider.value) + self.progressCircleView?.progressValue = CGFloat(self.progressSlider.value) + self.progressCircleView?.targetValue = CGFloat(self.targetSlider.value) + + //2 + self.progressCircleView2?.circleWidth = CGFloat(self.widthSlider.value) + self.progressCircleView2?.progressValue = CGFloat(self.progressSlider.value) + self.progressCircleView2?.targetValue = CGFloat(self.targetSlider.value) + + + //3 + self.progressCircleView3?.circleWidth = CGFloat(self.widthSlider.value) + self.progressCircleView3?.progressValue = CGFloat(self.progressSlider.value) + self.progressCircleView3?.targetValue = CGFloat(self.targetSlider.value) + } + + override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { + super.viewWillTransition(to: size, with: coordinator) + + self.progressCircleView?.setNeedsDisplay() + self.progressCircleView2?.setNeedsDisplay() + self.progressCircleView3?.setNeedsDisplay() + } + + @IBAction func widthChange(_ sender: Any) { + self.progressCircleView?.circleWidth = CGFloat(self.widthSlider.value) + self.progressCircleView2?.circleWidth = CGFloat(self.widthSlider.value) + self.progressCircleView3?.circleWidth = CGFloat(self.widthSlider.value) + } + + @IBAction func progessChange(_ sender: Any) { + self.progressCircleView?.progressValue = CGFloat(self.progressSlider.value) + self.progressCircleView2?.progressValue = CGFloat(self.progressSlider.value) + self.progressCircleView3?.progressValue = CGFloat(self.progressSlider.value) + } + + @IBAction func targetChange(_ sender: Any) { + self.progressCircleView?.targetValue = CGFloat(self.targetSlider.value) + self.progressCircleView2?.targetValue = CGFloat(self.targetSlider.value) + self.progressCircleView3?.targetValue = CGFloat(self.targetSlider.value) + } +} + + diff --git a/CustomView/Controllers/ProgressBarViewController.swift b/CustomView/Controllers/ProgressBarViewController.swift index 7c56694..094f0b1 100644 --- a/CustomView/Controllers/ProgressBarViewController.swift +++ b/CustomView/Controllers/ProgressBarViewController.swift @@ -40,5 +40,15 @@ class ProgressBarViewController: UITableViewController { @IBAction func targetChange(_ sender: Any) { self.progressBarView?.targetValue = CGFloat(self.targetSlider.value) } + + @IBAction func ChageprogressColor(_ sender: UIButton) { + self.progressCircleView?.progressColor = sender.backgroundColor ?? self.progressCircleView!.progressColor + + } + @IBAction func ChangeProgressColor(_ sender: UIButton) { + self.progressCircleView?.targetColor = sender.backgroundColor ?? self.progressCircleView!.targetColor + + } + } 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) {