From 8a0eb598ae53858466ddf8333a0bb6de5addfdd7 Mon Sep 17 00:00:00 2001 From: Ramon Gilabert Date: Mon, 5 Oct 2015 21:31:19 +0200 Subject: [PATCH 1/6] Improving the demo. --- .../UserInterfaceState.xcuserstate | Bin 23249 -> 22575 bytes .../WhisperDemo/ViewController.swift | 68 +++++++++++------- 2 files changed, 44 insertions(+), 24 deletions(-) diff --git a/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate b/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate index 1b115638d5d202502ca352a7dda00eafa3df9d5f..d4a2b82e75952afe8787a1f075dec14aa66b96e7 100644 GIT binary patch literal 22575 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 diff --git a/Demo/WhisperDemo/WhisperDemo/ViewController.swift b/Demo/WhisperDemo/WhisperDemo/ViewController.swift index fa729fe..cf259f8 100644 --- a/Demo/WhisperDemo/WhisperDemo/ViewController.swift +++ b/Demo/WhisperDemo/WhisperDemo/ViewController.swift @@ -23,19 +23,29 @@ class ViewController: UIViewController { return label }() - lazy var presentButton: UIButton = { + lazy var presentButton: UIButton = { [unowned self] in let button = UIButton() button.addTarget(self, action: "presentButtonDidPress:", forControlEvents: .TouchUpInside) - button.setTitle("Present", forState: .Normal) - button.setTitleColor(UIColor.blackColor(), forState: .Normal) - button.layer.borderColor = UIColor.blackColor().CGColor - button.layer.borderWidth = 1.5 - button.layer.cornerRadius = 7.5 + button.setTitle("Present and silent", forState: .Normal) return button }() - var shouldChange = false + lazy var showButton: UIButton = { [unowned self] in + let button = UIButton() + button.addTarget(self, action: "showButtonDidPress:", forControlEvents: .TouchUpInside) + button.setTitle("Show", forState: .Normal) + + return button + }() + + lazy var presentPermanentButton: UIButton = { [unowned self] in + let button = UIButton() + button.addTarget(self, action: "presentPermanentButtonDidPress:", forControlEvents: .TouchUpInside) + button.setTitle("Present permanent Whisper", forState: .Normal) + + return button + }() override func viewDidLoad() { super.viewDidLoad() @@ -44,7 +54,14 @@ class ViewController: UIViewController { view.backgroundColor = UIColor.whiteColor() view.addSubview(scrollView) - for subview in [icon, titleLabel, presentButton] { scrollView.addSubview(subview) } + for subview in [icon, titleLabel, presentButton, showButton, presentPermanentButton] { scrollView.addSubview(subview) } + + for button in [presentButton, showButton, presentPermanentButton] { + button.setTitleColor(UIColor.grayColor(), forState: .Normal) + button.layer.borderColor = UIColor.grayColor().CGColor + button.layer.borderWidth = 1.5 + button.layer.cornerRadius = 7.5 + } } override func viewDidAppear(animated: Bool) { @@ -56,21 +73,24 @@ class ViewController: UIViewController { func presentButtonDidPress(button: UIButton) { guard let navigationController = self.navigationController else { return } - let message = Message(title: "Sup", color: UIColor.redColor()) - let secondMessage = Message(title: "Changing all the things", color: UIColor.blackColor()) + let message = Message(title: "This message will silent in 3 seconds.", color: UIColor(red:0.89, green:0.09, blue:0.44, alpha:1)) + Whisper(message, to: navigationController, action: .Present) + Silent(navigationController, after: 3) + } - if shouldChange { - //Silent(navigationController, after: 3) - let controller = ViewController() - navigationController.pushViewController(controller, animated: true) - } else { - Whisper(message, to: navigationController, action: .Present) - } + func showButtonDidPress(button: UIButton) { + guard let navigationController = self.navigationController else { return } + + let message = Message(title: "Showing all the things.", color: UIColor.blackColor()) + Whisper(message, to: navigationController) + } -// if shouldChange { Silent(navigationController, after: 3) } + func presentPermanentButtonDidPress(button: UIButton) { + guard let navigationController = self.navigationController else { return } - shouldChange = !shouldChange + let message = Message(title: "This is a permanent Whisper.", color: UIColor(red:0.87, green:0.34, blue:0.05, alpha:1)) + Whisper(message, to: navigationController, action: .Present) } // MARK - Configuration @@ -80,11 +100,11 @@ class ViewController: UIViewController { let totalSize = UIScreen.mainScreen().bounds let originY = navigationHeight + UIApplication.sharedApplication().statusBarFrame.height - scrollView.frame = CGRect(x: 0, y: originY, - width: totalSize.width, height: totalSize.height - originY) - titleLabel.frame.origin = CGPoint(x: (totalSize.width - titleLabel.frame.width) / 2, y: totalSize.height / 2 - 150) - presentButton.frame = CGRect(x: 50, y: titleLabel.frame.origin.y + titleLabel.frame.size.height + 75, - width: totalSize.width - 100, height: 50) + scrollView.frame = CGRect(x: 0, y: originY, width: totalSize.width, height: totalSize.height - originY) + titleLabel.frame.origin = CGPoint(x: (totalSize.width - titleLabel.frame.width) / 2, y: totalSize.height / 2 - 200) + presentButton.frame = CGRect(x: 50, y: titleLabel.frame.maxY + 75, width: totalSize.width - 100, height: 50) + showButton.frame = CGRect(x: 50, y: presentButton.frame.maxY + 15, width: totalSize.width - 100, height: 50) + presentPermanentButton.frame = CGRect(x: 50, y: showButton.frame.maxY + 15, width: totalSize.width - 100, height: 50) } } From 437a4f27559ca3a1bf9b48f06ee38035fd4543ef Mon Sep 17 00:00:00 2001 From: Ramon Gilabert Date: Mon, 5 Oct 2015 21:55:12 +0200 Subject: [PATCH 2/6] Adds no back button. --- .../WhisperDemo.xcodeproj/project.pbxproj | 4 +++ .../UserInterfaceState.xcuserstate | Bin 22575 -> 23427 bytes .../WhisperDemo/DetailViewController.swift | 11 ++++++++ .../WhisperDemo/ViewController.swift | 24 +++++++++++++++++- 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 Demo/WhisperDemo/WhisperDemo/DetailViewController.swift diff --git a/Demo/WhisperDemo/WhisperDemo.xcodeproj/project.pbxproj b/Demo/WhisperDemo/WhisperDemo.xcodeproj/project.pbxproj index 4546c54..6eceaa5 100644 --- a/Demo/WhisperDemo/WhisperDemo.xcodeproj/project.pbxproj +++ b/Demo/WhisperDemo/WhisperDemo.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 2977865E1BC30BEF0050D397 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2977865D1BC30BEF0050D397 /* DetailViewController.swift */; settings = {ASSET_TAGS = (); }; }; 29AD429E1BBC2BD2004292F1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29AD429D1BBC2BD2004292F1 /* AppDelegate.swift */; }; 29AD42A01BBC2BD2004292F1 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29AD429F1BBC2BD2004292F1 /* ViewController.swift */; }; 29AD42A51BBC2BD2004292F1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 29AD42A41BBC2BD2004292F1 /* Assets.xcassets */; }; @@ -15,6 +16,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 2977865D1BC30BEF0050D397 /* DetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = ""; }; 29AD429A1BBC2BD2004292F1 /* WhisperDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WhisperDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 29AD429D1BBC2BD2004292F1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 29AD429F1BBC2BD2004292F1 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -69,6 +71,7 @@ children = ( 29AD429D1BBC2BD2004292F1 /* AppDelegate.swift */, 29AD429F1BBC2BD2004292F1 /* ViewController.swift */, + 2977865D1BC30BEF0050D397 /* DetailViewController.swift */, 29AD42A41BBC2BD2004292F1 /* Assets.xcassets */, 29AD42A61BBC2BD2004292F1 /* LaunchScreen.storyboard */, 29AD42A91BBC2BD2004292F1 /* Info.plist */, @@ -205,6 +208,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 2977865E1BC30BEF0050D397 /* DetailViewController.swift in Sources */, 29AD42A01BBC2BD2004292F1 /* ViewController.swift in Sources */, 29AD429E1BBC2BD2004292F1 /* AppDelegate.swift in Sources */, ); diff --git a/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate b/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate index d4a2b82e75952afe8787a1f075dec14aa66b96e7..8168939b6386510e787e3a5d3cbc761a4749afd6 100644 GIT binary patch delta 12014 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 L-{0nc3p@Wmcst@w delta 11429 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 diff --git a/Demo/WhisperDemo/WhisperDemo/DetailViewController.swift b/Demo/WhisperDemo/WhisperDemo/DetailViewController.swift new file mode 100644 index 0000000..6d7b764 --- /dev/null +++ b/Demo/WhisperDemo/WhisperDemo/DetailViewController.swift @@ -0,0 +1,11 @@ +import UIKit + +class DetailViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + view.backgroundColor = UIColor(red:0.86, green:0.86, blue:0.86, alpha:1) + title = "Whisper detail".uppercaseString + } +} diff --git a/Demo/WhisperDemo/WhisperDemo/ViewController.swift b/Demo/WhisperDemo/WhisperDemo/ViewController.swift index cf259f8..203e3c5 100644 --- a/Demo/WhisperDemo/WhisperDemo/ViewController.swift +++ b/Demo/WhisperDemo/WhisperDemo/ViewController.swift @@ -47,12 +47,23 @@ class ViewController: UIViewController { return button }() + lazy var newControllerButton: UIBarButtonItem = { [unowned self] in + let button = UIBarButtonItem() + button.title = "Next" + button.target = self + button.action = "nextButtonDidPress" + + return button + }() + override func viewDidLoad() { super.viewDidLoad() - title = "Whisper".uppercaseString view.backgroundColor = UIColor.whiteColor() + navigationItem.rightBarButtonItem = newControllerButton + navigationItem.backBarButtonItem = UIBarButtonItem(title: nil, style: .Plain, target: nil, action: nil) + view.addSubview(scrollView) for subview in [icon, titleLabel, presentButton, showButton, presentPermanentButton] { scrollView.addSubview(subview) } @@ -64,6 +75,11 @@ class ViewController: UIViewController { } } + override func viewWillAppear(animated: Bool) { + super.viewWillAppear(animated) + title = "Whisper".uppercaseString + } + override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) setupFrames() @@ -93,6 +109,12 @@ class ViewController: UIViewController { Whisper(message, to: navigationController, action: .Present) } + func nextButtonDidPress() { + let controller = DetailViewController() + title = "" + navigationController?.pushViewController(controller, animated: true) + } + // MARK - Configuration func setupFrames() { From e44f280af8c5f946dfe2ab457faa630a5e6ca6dc Mon Sep 17 00:00:00 2001 From: Ramon Gilabert Date: Mon, 5 Oct 2015 22:20:06 +0200 Subject: [PATCH 3/6] Will add the view at the end. --- .../UserInterfaceState.xcuserstate | Bin 23427 -> 24327 bytes .../WhisperDemo/DetailViewController.swift | 22 ++++++++++++- Source/WhisperFactory.swift | 31 ++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate b/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate index 8168939b6386510e787e3a5d3cbc761a4749afd6..e214538459ec3882540117ac424db873ea6ac34a 100644 GIT binary patch delta 13083 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 WLhiatfw2C+FORwH5;Xj6q4+;*H_3JY delta 11983 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 maximumY { maximumY = subview.frame.maxY } + } + + whisperView.frame.origin.y = maximumY navigationController.navigationBar.addSubview(whisperView) } @@ -152,6 +160,15 @@ class WhisperFactory: NSObject { navigationController.navigationBar.addSubview(whisperView) whisperView.frame.size.height = 0 + var maximumY = navigationController.navigationBar.frame.height + - UIApplication.sharedApplication().statusBarFrame.height + + for subview in navigationController.navigationBar.subviews { + if subview.frame.maxY > maximumY { maximumY = subview.frame.maxY } + } + + whisperView.frame.origin.y = maximumY + action == .Present ? presentView() : showView() } @@ -187,6 +204,20 @@ class WhisperFactory: NSObject { extension WhisperFactory: UINavigationControllerDelegate { + func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) { + var maximumY = navigationController.navigationBar.frame.maxY - UIApplication.sharedApplication().statusBarFrame.height + + for subview in navigationController.navigationBar.subviews { + if subview is WhisperView { navigationController.navigationBar.bringSubviewToFront(subview) } + + if subview.frame.maxY > maximumY && !(subview is WhisperView) { + maximumY = subview.frame.maxY + } + } + + whisperView.frame.origin.y = maximumY + } + func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) { for subview in navigationController.navigationBar.subviews where subview is WhisperView { From b5c44d22a10e42a440984d451a4697741c629e75 Mon Sep 17 00:00:00 2001 From: Ramon Gilabert Date: Mon, 5 Oct 2015 22:20:51 +0200 Subject: [PATCH 4/6] Deletes line --- .../UserInterfaceState.xcuserstate | Bin 24327 -> 24156 bytes Source/WhisperFactory.swift | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate b/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate index e214538459ec3882540117ac424db873ea6ac34a..835c79d8dc7284b2290bdf493eea62afc06dd4f9 100644 GIT binary patch delta 11205 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 G maximumY { maximumY = subview.frame.maxY } } From ba87296bb4168a1a5c76b64f0847322bb58e3568 Mon Sep 17 00:00:00 2001 From: Ramon Gilabert Date: Mon, 5 Oct 2015 22:23:41 +0200 Subject: [PATCH 5/6] Improves the animation. --- .../UserInterfaceState.xcuserstate | Bin 24156 -> 24301 bytes .../WhisperDemo/ViewController.swift | 14 ++++++++++++ Source/WhisperFactory.swift | 20 ++++++++++++++---- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate b/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate index 835c79d8dc7284b2290bdf493eea62afc06dd4f9..029d01451f6faf99081858bba33a06cf19e858fa 100644 GIT binary patch delta 11810 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 R0KA_R|CaYl!{27q{{cZCMsWZD delta 11538 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 X*@tC2{A~~b{9o$0|J(R~*{=Tw95|RO diff --git a/Demo/WhisperDemo/WhisperDemo/ViewController.swift b/Demo/WhisperDemo/WhisperDemo/ViewController.swift index 203e3c5..6c212ad 100644 --- a/Demo/WhisperDemo/WhisperDemo/ViewController.swift +++ b/Demo/WhisperDemo/WhisperDemo/ViewController.swift @@ -56,6 +56,13 @@ class ViewController: UIViewController { return button }() + lazy var containerView: UIView = { + let view = UIView() + view.backgroundColor = UIColor.grayColor() + + return view + }() + override func viewDidLoad() { super.viewDidLoad() @@ -73,6 +80,13 @@ class ViewController: UIViewController { button.layer.borderWidth = 1.5 button.layer.cornerRadius = 7.5 } + + guard let navigationController = navigationController else { return } + + navigationController.navigationBar.addSubview(containerView) + containerView.frame = CGRect(x: 0, + y: navigationController.navigationBar.frame.maxY - UIApplication.sharedApplication().statusBarFrame.height, + width: UIScreen.mainScreen().bounds.width, height: 100) } override func viewWillAppear(animated: Bool) { diff --git a/Source/WhisperFactory.swift b/Source/WhisperFactory.swift index 9f9b455..8c96c50 100644 --- a/Source/WhisperFactory.swift +++ b/Source/WhisperFactory.swift @@ -50,7 +50,10 @@ class WhisperFactory: NSObject { whisperView.frame.size.height = 0 var maximumY = navigationController.navigationBar.frame.height - UIApplication.sharedApplication().statusBarFrame.height - for subview in whisperView.transformViews { subview.frame.origin.y = -20 } + for subview in whisperView.transformViews { + subview.frame.origin.y = -10 + subview.alpha = 0 + } for subview in navigationController.navigationBar.subviews { if subview.frame.maxY > maximumY { maximumY = subview.frame.maxY } @@ -94,7 +97,10 @@ class WhisperFactory: NSObject { UIView.animateWithDuration(AnimationTiming.movement, animations: { self.whisperView.frame.size.height = WhisperView.Dimensions.height - for subview in self.whisperView.transformViews { subview.frame.origin.y = 0 } + for subview in self.whisperView.transformViews { + subview.frame.origin.y = 0 + subview.alpha = 1 + } }) } @@ -103,7 +109,10 @@ class WhisperFactory: NSObject { UIView.animateWithDuration(AnimationTiming.movement, animations: { self.whisperView.frame.size.height = WhisperView.Dimensions.height - for subview in self.whisperView.transformViews { subview.frame.origin.y = 0 } + for subview in self.whisperView.transformViews { + subview.frame.origin.y = 0 + subview.alpha = 1 + } }, completion: { _ in self.delayTimer = NSTimer.scheduledTimerWithTimeInterval(1.5, target: self, selector: "delayFired:", userInfo: nil, repeats: false) @@ -131,7 +140,10 @@ class WhisperFactory: NSObject { UIView.animateWithDuration(AnimationTiming.movement, animations: { self.whisperView.frame.size.height = 0 - for subview in self.whisperView.transformViews { subview.frame.origin.y = -20 } + for subview in self.whisperView.transformViews { + subview.frame.origin.y = -10 + subview.alpha = 0 + } }, completion: { _ in self.whisperView.removeFromSuperview() }) From 52951021e4fac4ee4d93d2aef8d83761e7798993 Mon Sep 17 00:00:00 2001 From: Ramon Gilabert Date: Mon, 5 Oct 2015 22:27:15 +0200 Subject: [PATCH 6/6] Changes size --- .../UserInterfaceState.xcuserstate | Bin 24301 -> 24150 bytes .../WhisperDemo/ViewController.swift | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate b/Demo/WhisperDemo/WhisperDemo.xcworkspace/xcuserdata/RamonGilabert.xcuserdatad/UserInterfaceState.xcuserstate index 029d01451f6faf99081858bba33a06cf19e858fa..5703b00e1152332b3ef92b9c9fa99167b5457808 100644 GIT binary patch delta 11368 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 Z_)YQq=7i@J0|3u2b=&jX_-}LS{{U+T5>NmD diff --git a/Demo/WhisperDemo/WhisperDemo/ViewController.swift b/Demo/WhisperDemo/WhisperDemo/ViewController.swift index 6c212ad..7648d05 100644 --- a/Demo/WhisperDemo/WhisperDemo/ViewController.swift +++ b/Demo/WhisperDemo/WhisperDemo/ViewController.swift @@ -86,7 +86,7 @@ class ViewController: UIViewController { navigationController.navigationBar.addSubview(containerView) containerView.frame = CGRect(x: 0, y: navigationController.navigationBar.frame.maxY - UIApplication.sharedApplication().statusBarFrame.height, - width: UIScreen.mainScreen().bounds.width, height: 100) + width: UIScreen.mainScreen().bounds.width, height: 75) } override func viewWillAppear(animated: Bool) {