Swiftpack.co - Blackjacx/SHSearchBar as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by Blackjacx.
Blackjacx/SHSearchBar v0.9.19
The search bar that doesn't suck.
⭐️ 249
🕓 1 week ago
.package(url: "https://github.com/Blackjacx/SHSearchBar.git", from: "v0.9.19")

Twitter Follow Twitter Follow Version Swift Versions Platforms Codebeat License Donate


The clean and shiny search bar that does what UISearchBar does only with dirty hacks. This view is designed to tackle the customization limits of UISearchBar. The difference here is that this class does not inherit UISearchBar but composes a new UIView object by using a UITextField that is much easier to use. These are the limits of the UISearchBar:

  • no clean way to left align the placeholder
  • the cancel button is hard to tailor to your needs
  • generally the appearance is not customizable (e.g. the font of the text)
  • there are some strange behaviors when you set a custom background image

Since I use a UITextField these restrictions do not apply.


Swift Package Manager

In Xcode open your target list and select your project. Click the tab Swift Packages and there the small + icon. Enter the URL of this repository, select the version you want to install - usually the preset is okay - and confirm.


Since SHSearchBar uses localized resources I dropped CocoaPods support in favor of SPM from version 2.0.0. Please integrate the package via SPM (see above).


Since SHSearchBar uses localized resources I dropped Carthage support in favor of SPM from version 2.0.0. Please integrate the package via SPM (see above).


The repo includes an example project. It shows shows different use cases of the search bar. To run it, just open and run ./Example/SHSearchBarExample.xcodeproj. The following images show some use cases:

You can show a custom placeholder like for normal text fields:

And you can even type text into that searchbar:

Wow there are customizable accessory views too:
Accesssory Icon

Easily customize text and cancel button as you want:
Customizable text and ancel button

You can customize each corner radius of the text field so that layouts like this become an ease:
Corner Radius Customization

The inner text field supports the new iOS 10 'textContentMode':
(Re-uses the address searched in Apple Maps before)
UITextContentMode Support

You can use the search bar inside a UINavigationBar:
UINavigationBar Support

Code Documentation

The code documentation is generated and hosted by Swift Package Index (powered by DocC)


To release this Swift package the following steps have to be taken:

  • Create a new branch release-x.y.z
  • Run bash <(curl -H -s https://raw.githubusercontent.com/Blackjacx/Scripts/master/frameworks/bootstrap.sh) to update to the latest shared development files
  • Run bundle update to update all Ruby gems
  • Commit all changes, make a PR and merge it to develop
  • Run bundle exec fastlane release framework:"SHSearchBar" version:"x.y.z" to release the new version
  • Post the following on Twitter
SHSearchBar release x.y.z 🎉

▸ 🚀  SHSearchBar (x.y.z) successfully published
▸ 📅  September 2nd
▸ 🌎  https://swiftpackageindex.com/Blackjacx/SHSearchBar
▸ 🌎  https://github.com/Blackjacx/SHSearchBar/releases/latest
▸ 👍  Tell your friends!

#spm #search #ios #apple #xcode #uisearchbar #swiftpackagemanager


  • If you found a bug, please open an issue.
  • If you have a feature request, please open an issue.
  • If you want to contribute, please submit a pull request.


Stefan Herold • 🐦 @Blackjacxxx


Thanks to all of you who are part of this:


SHSearchBar is available under the MIT license. See the LICENSE file for more info.


Stars: 249
Last commit: 1 week ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

Hello Swift PM
2 years ago


This version is all about making SHSearchBar compatible with SPM and Swift 5.3.


I had to say goodbye to Cocoapods and Carthage. Since Apple recommends to not make assumptions about resource locations I have to use Bundle.module (read more about it here and here) which is not auto-generated by Carthage or Cocoapods at the moment. Apart from that I cannot detect the dependency manager at runtime and therefore would have to fallback to my own resource location algorithm. I don't know if this was intended by Apple 🤷...

Closed PRs

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics