From 7b6de9d61dcfc094158d6c71159bfeedb7173172 Mon Sep 17 00:00:00 2001 From: Boisney Philippe Date: Tue, 7 Mar 2017 15:02:54 +0100 Subject: [PATCH 1/2] Support empty suggestionsList --- Pod/Classes/ModernSearchBar.swift | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/Pod/Classes/ModernSearchBar.swift b/Pod/Classes/ModernSearchBar.swift index d54789e..0b7fd37 100644 --- a/Pod/Classes/ModernSearchBar.swift +++ b/Pod/Classes/ModernSearchBar.swift @@ -296,13 +296,24 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS // SUGGESTIONS VIEW UTILS // -------------------------------- + private func haveToOpenSuggestionView() -> Bool { + switch self.choice { + case .normal: + return !self.suggestionListFiltred.isEmpty + case .withUrl: + return !self.suggestionListWithUrlFiltred.isEmpty + } + } + private func openSuggestionsView(){ - if (!self.isSuggestionsViewOpened){ - self.animationOpening() - - self.addViewToParent(view: self.suggestionsShadow) - self.addViewToParent(view: self.suggestionsView) - self.isSuggestionsViewOpened = true + if (self.haveToOpenSuggestionView()){ + if (!self.isSuggestionsViewOpened){ + self.animationOpening() + + self.addViewToParent(view: self.suggestionsShadow) + self.addViewToParent(view: self.suggestionsView) + self.isSuggestionsViewOpened = true + } } } From 507ae36ae7567bc154b63c0216f01ee5b584101b Mon Sep 17 00:00:00 2001 From: Boisney Philippe Date: Tue, 7 Mar 2017 17:34:58 +0100 Subject: [PATCH 2/2] Update to version 1.2 --- ModernSearchBar.podspec | 2 +- Pod/Classes/ModernSearchBar.swift | 34 +++++++++--------- README.md | 3 +- .../UserInterfaceState.xcuserstate | Bin 18335 -> 20051 bytes .../ViewController.swift | 1 + 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/ModernSearchBar.podspec b/ModernSearchBar.podspec index ee2f7d4..2c58640 100755 --- a/ModernSearchBar.podspec +++ b/ModernSearchBar.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "ModernSearchBar" -s.version = "1.1" +s.version = "1.2" s.summary = "ModernSearchBar" s.description = "The famous iOS search bar with auto completion feature implemented." s.homepage = "https://github.com/PhilippeBoisney/ModernSearchBar" diff --git a/Pod/Classes/ModernSearchBar.swift b/Pod/Classes/ModernSearchBar.swift index 0b7fd37..f093f49 100644 --- a/Pod/Classes/ModernSearchBar.swift +++ b/Pod/Classes/ModernSearchBar.swift @@ -48,6 +48,7 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS public var suggestionsView_contentViewColor: UIColor? public var suggestionsView_separatorStyle: UITableViewCellSeparatorStyle = .none public var suggestionsView_selectionStyle: UITableViewCellSelectionStyle = UITableViewCellSelectionStyle.none + public var suggestionsView_verticalSpaceWithSearchBar: CGFloat = 4 public var suggestionsView_searchIcon_height: CGFloat = 17 public var suggestionsView_searchIcon_width: CGFloat = 17 @@ -126,12 +127,7 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS // -------------------------------- public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { - if searchText.isEmpty { - self.closeSuggestionsView() - } else { - self.searchWhenUserTyping(caracters: searchText) - self.openSuggestionsView() - } + self.searchWhenUserTyping(caracters: searchText) self.delegateModernSearchBar?.searchBar?(searchBar, textDidChange: searchText) } @@ -256,7 +252,7 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS DispatchQueue.main.async { self.suggestionListFiltred.removeAll() self.suggestionListFiltred.append(contentsOf: suggestionListFiltredTmp) - self.updateAfterSearch() + self.updateAfterSearch(caracters: caracters) } } @@ -275,7 +271,7 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS DispatchQueue.main.async { self.suggestionListWithUrlFiltred.removeAll() self.suggestionListWithUrlFiltred.append(contentsOf: suggestionListFiltredWithUrlTmp) - self.updateAfterSearch() + self.updateAfterSearch(caracters: caracters) } } @@ -287,9 +283,10 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS return ((stringQueried.range(of: stringSearched, options: String.CompareOptions.caseInsensitive, range: nil, locale: nil)) != nil) } - private func updateAfterSearch(){ + private func updateAfterSearch(caracters: String){ self.suggestionsView.reloadData() self.updateSizeSuggestionsView() + caracters.isEmpty ? self.closeSuggestionsView() : self.openSuggestionsView() } // -------------------------------- @@ -335,10 +332,7 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS UIView.animate(withDuration: 0.3, delay: 0.0, options: [], animations: { self.suggestionsView.alpha = 0.0 self.suggestionsShadow.alpha = 0.0 - }, completion: { (finished) -> Void in - self.suggestionsView.removeFromSuperview() - self.suggestionsShadow.removeFromSuperview() - }) + }, completion: nil) } // -------------------------------- @@ -346,11 +340,11 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS // -------------------------------- private func getSuggestionsViewX() -> CGFloat { - return self.getEditText().frame.origin.x + return self.getGlobalPointEditText().x } private func getSuggestionsViewY() -> CGFloat { - return self.frame.origin.y.adding(self.getEditText().frame.height).adding((self.frame.height.subtracting(self.getEditText().frame.height)).divided(by: 2)).subtracting(4) + return self.getShadowY().subtracting(self.suggestionsView_verticalSpaceWithSearchBar) } private func getSuggestionsViewWidth() -> CGFloat { @@ -362,11 +356,11 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS } private func getShadowX() -> CGFloat { - return self.frame.origin.x + return 0 } private func getShadowY() -> CGFloat { - return self.frame.origin.y.adding(self.frame.height) + return self.getGlobalPointEditText().y.adding(self.getEditText().frame.height) } private func getShadowHeight() -> CGFloat { @@ -374,7 +368,7 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS } private func getShadowWidth() -> CGFloat { - return self.frame.width + return (self.getTopViewController()?.view.frame.width)! } private func updateSizeSuggestionsView(){ @@ -426,6 +420,10 @@ public class ModernSearchBar: UISearchBar, UISearchBarDelegate, UITableViewDataS } } + private func getGlobalPointEditText() -> CGPoint { + return self.getEditText().superview!.convert(self.getEditText().frame.origin, to: nil) + } + private func interceptOrientationChange(){ self.getEditText().addObserver(self, forKeyPath: "frame", options: NSKeyValueObservingOptions(rawValue: 0), context: nil) } diff --git a/README.md b/README.md index dfc478f..8977e4f 100644 --- a/README.md +++ b/README.md @@ -113,11 +113,12 @@ self.modernSearchBar.suggestionsView_backgroundColor = UIColor.brown self.modernSearchBar.suggestionsView_contentViewColor = UIColor.yellow self.modernSearchBar.suggestionsView_separatorStyle = .singleLine self.modernSearchBar.suggestionsView_selectionStyle = UITableViewCellSelectionStyle.gray +self.modernSearchBarsuggestionsView_verticalSpaceWithSearchBar = 10 ``` ## Version -1.1 +1.2 ## License diff --git a/Sample/ModernSearchBar-Sample/ModernSearchBar-Sample.xcworkspace/xcuserdata/Philippe.xcuserdatad/UserInterfaceState.xcuserstate b/Sample/ModernSearchBar-Sample/ModernSearchBar-Sample.xcworkspace/xcuserdata/Philippe.xcuserdatad/UserInterfaceState.xcuserstate index 866d6fef4ad0de0d87aa072a882ddd881e3f07d1..95c7570943d64302e20f0e48f17701fd13339610 100644 GIT binary patch delta 9350 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 Nk+$l0^)qn)e*n^GTeScH delta 8908 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%0Ar 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 diff --git a/Sample/ModernSearchBar-Sample/ModernSearchBar-Sample/ViewController.swift b/Sample/ModernSearchBar-Sample/ModernSearchBar-Sample/ViewController.swift index bd22122..f464484 100644 --- a/Sample/ModernSearchBar-Sample/ModernSearchBar-Sample/ViewController.swift +++ b/Sample/ModernSearchBar-Sample/ModernSearchBar-Sample/ViewController.swift @@ -149,6 +149,7 @@ class ViewController: UIViewController, ModernSearchBarDelegate { self.modernSearchBar.suggestionsView_contentViewColor = UIColor.yellow self.modernSearchBar.suggestionsView_separatorStyle = .singleLine self.modernSearchBar.suggestionsView_selectionStyle = UITableViewCellSelectionStyle.gray + self.modernSearchBarsuggestionsView_verticalSpaceWithSearchBar = 10 } private func makingSearchBarAwesome(){