适用于iOS的简单国家/地区选择器,设计优雅

国家选择器

非常简单的iOS国家选择器,设计优雅。它使用Unicode作为国旗。

截图

||

Requirements

  • iOS 12+
  • Xcode 12+
  • Swift 5.3+

Installation

Currently CountryPicker is only avaliable via SPM. You can also add manually to your project.

SPM

If you have already Swift package set up, add CountryPicker as a dependency to your dependencies in your file.Package.swift

dependencies: [
    .package(url: "https://github.com/mobven/CountryPicker.git")
]

Usage

UIKit

Simply, you present . You can set default country for the picker with variable (Default value is “TR”). To get informed about country selection, you should conform to in your .CountryPickerViewControllerselectedCountryCountryPickerDelegateUIViewController

let countryPicker = CountryPickerViewController()
countryPicker.selectedCountry = "TR"
countryPicker.delegate = self
self.present(countryPicker, animated: true)

SwiftUI

To present on SwiftUI, you need to create a representable. Check docs/SwiftUI out for details.CountryPickerViewControllerCountryPicker

CountryPickerDelegate

Delegate method will be called with country selection, you can update your outlets with new selected country model.

extension ViewController: CountryPickerDelegate {
    func countryPicker(didSelect country: Country) {
        countryTextField.text = country.isoCode.getFlag() + " " + country.localizedName
    }
}

Customization

Default picker theme is supporting Dark Mode for iO13+ devices. You can easly customize the picker with editing properties. If you are adding custom colors, you should add dark appearance color for dark mode support.Configuration

public protocol Configuration {
    var countryNameTextColor: UIColor { get set }
    var countryNameTextFont: UIFont { get set }
    var selectedCountryCodeBackgroundColor: UIColor { get set }
    var selectedCountryCodeTextColor: UIColor { get set }
    var selectedCountryCodeCornerRadius: CGFloat { get set }
    var countryCodeFont: UIFont { get set }
    var countryCodeTextColor: UIColor { get set }
    var closeButtonTextColor: UIColor { get set }
    var closeButtonFont: UIFont { get set }
    var closeButtonText: String { get set }
    var titleTextColor: UIColor { get set }
    var titleFont: UIFont { get set }
    var titleText: String { get set }
    var searchBarPlaceholder: String { get set }
    var searchBarBackgroundColor: UIColor { get set }
    var searchBarPlaceholderColor: UIColor { get set }
    var searchBarFont: UIFont { get set }
    var searchBarLeftImage: UIImage? { get set }
    var searchBarClearImage: UIImage? { get set }
    var searchBarCornerRadius: CGFloat { get set }
    var separatorColor: UIColor { get set }
}
Example

You can customize properties like this,

  CountryManager.shared.config.countryNameTextColor = .black
  CountryManager.shared.config.countryNameTextFont = UIFont.systemFont(ofSize: 16)

or you can create your own Config

  let configMaker = Config(
      countryNameTextColor: .black,
      countryNameTextFont: UIFont.systemFont(ofSize: 16),
      selectedCountryCodeBackgroundColor: .green
  )

  CountryManager.shared.config = configMaker()

Custom UI

getCountries() method in will return a array for you, so you can create your own custom UI implementations with this array.CountryManagerCountry

  let countries = CountryManager.shared.getCountries()

Flags

CountryPicker uses unicode for country flags. You can use with iso codes like the example below.

  label.text = "US".getFlag()

Localization

CountryPicker is use current for localization of country name, you can set custom locale before presenting picker.NSLocale

  CountryManager.shared.localeIdentifier = "en_US"
  let countryPicker = CountryPickerViewController()
  self.present(countryPicker, animated: true)

For page title and close button text you can set localized text with propertiesConfigration

  CountryManager.shared.config.titleText = "Country Picker"
  CountryManager.shared.config.closeButtonText = "Close"

CountryPicker v1.0.0 is support RTL except displaying localized phone codes.

What’s next

  • Sample Project.
  • SwiftUI representable code example.
  • Support below iOS 13.

GitHub

点击跳转