From f18d354b95b0854833c98153b434e166f8976e5c Mon Sep 17 00:00:00 2001 From: liakassardjian Date: Tue, 28 May 2019 17:26:26 -0300 Subject: [PATCH] Bronze e prata feitos --- CustomView.xcodeproj/project.pbxproj | 4 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 26676 bytes .../xcschemes/CustomView.xcscheme | 91 ++++++++++ .../xcschemes/xcschememanagement.plist | 22 +++ CustomView/Base.lproj/Main.storyboard | 158 ++++++++++++++++-- .../ProgressBarViewController.swift | 19 +++ .../ProgressCircleViewController.swift | 64 ++++++- CustomView/Views/ProgressBarView.swift | 7 +- CustomView/Views/ProgressCircleView.swift | 6 +- 9 files changed, 343 insertions(+), 28 deletions(-) create mode 100644 CustomView.xcodeproj/project.xcworkspace/xcuserdata/liakassardjian.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 CustomView.xcodeproj/xcshareddata/xcschemes/CustomView.xcscheme create mode 100644 CustomView.xcodeproj/xcuserdata/liakassardjian.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/CustomView.xcodeproj/project.pbxproj b/CustomView.xcodeproj/project.pbxproj index 73ab43a..5db43fc 100644 --- a/CustomView.xcodeproj/project.pbxproj +++ b/CustomView.xcodeproj/project.pbxproj @@ -311,7 +311,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 34E95R7U23; + DEVELOPMENT_TEAM = 5HW626WUP4; INFOPLIST_FILE = CustomView/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -329,7 +329,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 34E95R7U23; + DEVELOPMENT_TEAM = 5HW626WUP4; INFOPLIST_FILE = CustomView/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/CustomView.xcodeproj/project.xcworkspace/xcuserdata/liakassardjian.xcuserdatad/UserInterfaceState.xcuserstate b/CustomView.xcodeproj/project.xcworkspace/xcuserdata/liakassardjian.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..44425500e81f35fffde63a18b0a571fa66f4f69a GIT binary patch literal 26676 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 literal 0 HcmV?d00001 diff --git a/CustomView.xcodeproj/xcshareddata/xcschemes/CustomView.xcscheme b/CustomView.xcodeproj/xcshareddata/xcschemes/CustomView.xcscheme new file mode 100644 index 0000000..c731de9 --- /dev/null +++ b/CustomView.xcodeproj/xcshareddata/xcschemes/CustomView.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CustomView.xcodeproj/xcuserdata/liakassardjian.xcuserdatad/xcschemes/xcschememanagement.plist b/CustomView.xcodeproj/xcuserdata/liakassardjian.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..57f4dbb --- /dev/null +++ b/CustomView.xcodeproj/xcuserdata/liakassardjian.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + CustomView.xcscheme_^#shared#^_ + + orderHint + 0 + + + SuppressBuildableAutocreation + + 92949A482295DAF3008EE240 + + primary + + + + + diff --git a/CustomView/Base.lproj/Main.storyboard b/CustomView/Base.lproj/Main.storyboard index 4b8cb5b..0404d99 100644 --- a/CustomView/Base.lproj/Main.storyboard +++ b/CustomView/Base.lproj/Main.storyboard @@ -55,6 +55,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -67,7 +137,7 @@ - + @@ -93,16 +163,37 @@ - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + @@ -124,7 +215,7 @@ - + @@ -162,7 +253,7 @@ - + @@ -205,15 +296,20 @@ - + + + + + + - + - + @@ -243,6 +339,33 @@ + + + + + + + + + + + + + + + @@ -393,8 +516,11 @@ + + + diff --git a/CustomView/Controllers/ProgressBarViewController.swift b/CustomView/Controllers/ProgressBarViewController.swift index 7c56694..894d028 100644 --- a/CustomView/Controllers/ProgressBarViewController.swift +++ b/CustomView/Controllers/ProgressBarViewController.swift @@ -14,6 +14,9 @@ class ProgressBarViewController: UITableViewController { @IBOutlet weak var widthSlider: UISlider! @IBOutlet weak var progressSlider: UISlider! @IBOutlet weak var targetSlider: UISlider! + @IBOutlet weak var targetLabel: UILabel! + @IBOutlet weak var progressLabel: UILabel! + @IBOutlet weak var colorSegmentedControl: UISegmentedControl! override func viewDidLoad() { super.viewDidLoad() @@ -21,6 +24,10 @@ class ProgressBarViewController: UITableViewController { self.progressBarView?.lineWidth = CGFloat(self.widthSlider.value) self.progressBarView?.progressValue = CGFloat(self.progressSlider.value) self.progressBarView?.targetValue = CGFloat(self.targetSlider.value) + + self.progressLabel.text = String(format: "%.2f", self.progressSlider.value * 100) + "%" + + self.targetLabel.text = String(format: "%.2f", self.targetSlider.value * 100) + "%" } override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { @@ -35,10 +42,22 @@ class ProgressBarViewController: UITableViewController { @IBAction func progessChange(_ sender: Any) { self.progressBarView?.progressValue = CGFloat(self.progressSlider.value) + + self.progressLabel.text = String(format: "%.2f", self.progressSlider.value * 100) + "%" } @IBAction func targetChange(_ sender: Any) { self.progressBarView?.targetValue = CGFloat(self.targetSlider.value) + + self.targetLabel.text = String(format: "%.2f", self.targetSlider.value * 100) + "%" + } + + @IBAction func changeColor(_ sender: Any) { + if colorSegmentedControl.selectedSegmentIndex == 0 { + self.progressBarView?.progressColor = #colorLiteral(red: 1, green: 0.2527923882, blue: 1, alpha: 0.4874785959) + } else { + self.progressBarView?.progressColor = #colorLiteral(red: 0, green: 0.3593619466, blue: 1, alpha: 0.4874785959) + } } } diff --git a/CustomView/Controllers/ProgressCircleViewController.swift b/CustomView/Controllers/ProgressCircleViewController.swift index 266ef60..955c1b6 100644 --- a/CustomView/Controllers/ProgressCircleViewController.swift +++ b/CustomView/Controllers/ProgressCircleViewController.swift @@ -10,35 +10,83 @@ import UIKit class ProgressCircleViewController: UITableViewController { - @IBOutlet weak var progressCircleView: ProgressCircleView? + @IBOutlet weak var progressCircleView1: 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! + @IBOutlet weak var targetLabel: UILabel! + @IBOutlet weak var progressLabel: UILabel! + @IBOutlet weak var colorSegmentedControl: UISegmentedControl! 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.progressCircleView1?.circleWidth = CGFloat(self.widthSlider.value) + self.progressCircleView1?.progressValue = CGFloat(self.progressSlider.value) + self.progressCircleView1?.targetValue = CGFloat(self.targetSlider.value) + + self.progressCircleView2?.circleWidth = CGFloat(self.widthSlider.value) + self.progressCircleView2?.progressValue = CGFloat(self.progressSlider.value) + self.progressCircleView2?.targetValue = CGFloat(self.targetSlider.value) + + self.progressCircleView3?.circleWidth = CGFloat(self.widthSlider.value) + self.progressCircleView3?.progressValue = CGFloat(self.progressSlider.value) + self.progressCircleView3?.targetValue = CGFloat(self.targetSlider.value) + + self.progressLabel.text = String(format: "%.2f", self.progressSlider.value * 100) + "%" + self.targetLabel.text = String(format: "%.2f", self.targetSlider.value * 100) + "%" + } override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) - self.progressCircleView?.setNeedsDisplay() + self.progressCircleView1?.setNeedsDisplay() + self.progressCircleView2?.setNeedsDisplay() + self.progressCircleView3?.setNeedsDisplay() } @IBAction func widthChange(_ sender: Any) { - self.progressCircleView?.circleWidth = CGFloat(self.widthSlider.value) + self.progressCircleView1?.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.progressCircleView1?.progressValue = CGFloat(self.progressSlider.value) + + self.progressCircleView2?.progressValue = CGFloat(self.progressSlider.value) + + self.progressCircleView3?.progressValue = CGFloat(self.progressSlider.value) + + self.progressLabel.text = String(format: "%.2f", self.progressSlider.value * 100) + "%" } @IBAction func targetChange(_ sender: Any) { - self.progressCircleView?.targetValue = CGFloat(self.targetSlider.value) + self.progressCircleView1?.targetValue = CGFloat(self.targetSlider.value) + + self.progressCircleView2?.targetValue = CGFloat(self.targetSlider.value) + + self.progressCircleView3?.targetValue = CGFloat(self.targetSlider.value) + + self.targetLabel.text = String(format: "%.2f", self.targetSlider.value * 100) + "%" + } + + + @IBAction func changeColor(_ sender: Any) { + if colorSegmentedControl.selectedSegmentIndex == 0 { + self.progressCircleView1?.progressColor = #colorLiteral(red: 1, green: 0.2527923882, blue: 1, alpha: 0.4874785959) + self.progressCircleView2?.progressColor = #colorLiteral(red: 1, green: 0.2527923882, blue: 1, alpha: 0.4874785959) + self.progressCircleView3?.progressColor = #colorLiteral(red: 1, green: 0.2527923882, blue: 1, alpha: 0.4874785959) + } else { + self.progressCircleView1?.progressColor = #colorLiteral(red: 0, green: 0.3593619466, blue: 1, alpha: 0.4874785959) + self.progressCircleView2?.progressColor = #colorLiteral(red: 0, green: 0.3593619466, blue: 1, alpha: 0.4874785959) + self.progressCircleView3?.progressColor = #colorLiteral(red: 0, green: 0.3593619466, blue: 1, alpha: 0.4874785959) + } } } diff --git a/CustomView/Views/ProgressBarView.swift b/CustomView/Views/ProgressBarView.swift index bfe9f6a..bb07c66 100644 --- a/CustomView/Views/ProgressBarView.swift +++ b/CustomView/Views/ProgressBarView.swift @@ -35,8 +35,13 @@ class ProgressBarView: UIView { var lineColor:UIColor = UIColor.black @IBInspectable var targetColor:UIColor = UIColor.blue + @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..f733ff0 100644 --- a/CustomView/Views/ProgressCircleView.swift +++ b/CustomView/Views/ProgressCircleView.swift @@ -41,7 +41,11 @@ class ProgressCircleView: UIView { var circleColor:UIColor = UIColor.black @IBInspectable - var progressColor:UIColor = UIColor.yellow + var progressColor:UIColor = UIColor.yellow { + didSet { + setNeedsDisplay() + } + } @IBInspectable var targetColor:UIColor = UIColor.green