Git Product home page Git Product logo

sksearchcontroller's Introduction

SKSearchController

Logo

Build Pass Language

A Wrap for UISearchController makes all customization super easy.

Demo

Dwonload and check out the demo project.

Demo

Requirements

  • iOS 8.0+
  • Swift 4.0+

Installation

Cocoapods

Pod `SKSearchController`

Manual

Download two .swift files in Source.

Usage

1. Initialization.

Toltally same initilizers as UISearchController
var searchController = SKSearchController(searchResultsController: nil)

2. Setup

All the setups must be done in the ViewDidAppear:. Some seting would be unavailable otherwise.


    func setupSearchController() {
        searchController.placeholder = "SKSearchController Demo"
        searchController.customizeCancelButton = { button in
            button.setAttributedTitle(NSAttributedString(string: "Punch", attributes: [.foregroundColor : UIColor.white, .font: UIFont.systemFont(ofSize: 15)]), for: .normal)
            button.backgroundColor = UIColor(hex: 0xEE7F79)
            button.layer.cornerRadius = 4
        }

        searchController.barBackgroundColor = UIColor(hex: 0xF9F9FA)
        
        searchController.leftIcon = UIImage(named: "football")
        searchController.leftIconColor =  UIColor(hex: 0xEE7F79)
        searchController.setRightBookmarkIcon(image: UIImage(named: "speaker"), color: UIColor(hex: 0xEE7F79), for: [UIControlState.normal])
        searchController.setRightClearIcon(image: UIImage(named: "x"), color: UIColor(hex: 0xEE7F79), for: [UIControlState.normal])
        
        searchController.cursorColor = UIColor(hex: 0x333333)
        searchController.textFieldTextColor = UIColor(hex: 0xbbbbbb)
        searchController.hideBorderLines = true
        searchController.textFieldBackgroundColor = UIColor(hex: 0xF9F9FA)
        
        searchController.searchTextDidChange = { searchBar, text in
            print("Keyword: \(text)")
        }
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        // Do the settings here. Some settings could be unavailable otherwise.
        setupSearchController()
    }

Documents

1. Properties

TextField

  • textFieldBackgroundColor: Backgournd color of textField in searchControler's searchBar
  • textFieldCornerRadius: corner radius of the textField
  • textFieldTextColor: text color of textField
  • textFieldFont: text font of textField
  • cursorColor: Set cursor color by changing the tint color of the searchField
  • placeholder: set up the placeholder of the searchBar
  • attributedPlaceholder: set up the attributedPlaceholder of the textField

CancelButton

  • showCancelButtonWhileEditing: determing whether shows the cancel button or not.
  • customizeCancelButton: (UIButton)->(): a clourse help you setup the cancel button
  • cencelButtonAttributedTitle: This attribute only valid when customizeCancelButton block is nil
  • cancelButtonColor: This attribute only valid when customizeCancelButton block and cencelButtonAttributedTitle are both nil
  • cancelButtonTitle: This attribute only valid when customizeCancelButton block and cencelButtonAttributedTitle are both nil

Icons

  • leftIcon: Set a image to the left search icon.
  • rightClearIcon: Set a image to the clear icon showed while you are typing
  • rightBookmarkIcon: Set a image to the bookmark icon showed on the right of the search field.

Bar

  • hideBorderLines: whether hide the upper and lower border line of the searchBar
  • barBackgroundColor: set the search bar background, only working on iOS 11 and lower
  • universalBackgoundColor: set the search bar and the navigationBar background. This attribute will also set searchBar.isTranslucent to false on iOS 11 and lower
  • hideNavitionBarBottomLine: whether hide the bottom line of the navigationBar

2. Methods

func setLeftIcon(image: UIImage?, color: UIColor?, for states: [UIControlState]) Set a image to the left search icon. The icon will be redered in the color if it's not nil.

func setRightBookmarkIcon(image: UIImage?, color: UIColor?, for states: [UIControlState]) Set a image to the right bookmark icon. The icon will be redered in the color if it's not nil.

func setRightClearIcon(image: UIImage?, color: UIColor?, for states: [UIControlState]) Set a image to the right clear icon. The icon will be redered in the color if it's not nil.

3. UISearchBar Delegate

The delegate methods of UISearchBar has been convert to closures like below

typealias EmptySearchBarHandler = (UISearchBar)->()
typealias BoolSearchBarHandler = (UISearchBar)->(Bool)

public var searchButtonClickHandler: EmptySearchBarHandler?
public var searchBarShouldBeginEditingHandler: BoolSearchBarHandler?
public var searchBarShouldEndEditingHandler: BoolSearchBarHandler?
public var searchBarCancelButtonClickHandler: EmptySearchBarHandler?

public var searchTextDidChange: ((UISearchBar, String)->())?
public var searchTextShouldChangeInRange: ((UISearchBar, NSRange, String)->(Bool))?

So set it up like this

searchController.searchTextDidChange = 
{ searchBar, text in
        print("Content: \(text)")
}

Simple and efficient

Todo

  • Objective-C version

sksearchcontroller's People

Contributors

junsw avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.