适用于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 .CountryPickerViewController
selectedCountry
CountryPickerDelegate
UIViewController
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.CountryPickerViewController
CountryPicker
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.CountryManager
Country
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.