項目中有添加收貨地址功能,由于剛進行Swift開發(fā),沒有存貨,系統(tǒng)的PickerView界面太過于... 你懂的,
也沒在網(wǎng)上找到看的順眼且合適的,項目比較急,索性就自己封裝個,就是WMAddressPicker,謝謝簡書,給有需要的猿類參考或者使用。
在開始介紹前,先介紹兩個第三方框架,HandyJSON 和 IBAnimatable,前者就不必說了,Swift開發(fā)必備,百度搜索一大片,淺談的、深究的,各種介紹,足夠你了解HandyJSON,阿里出品必屬精品。
對于IBAnimatable,誰用過誰知道,強大、使用簡單、便捷、效果炫酷的轉(zhuǎn)場動畫框架,使用方式如Swift標(biāo)準(zhǔn)庫一樣優(yōu)雅,還支持?jǐn)U展 Xib、Storyboard,添加、修改一些原生Xib、Storyboard不具備的屬性,最簡單的例子,給控件設(shè)置 cornerRadius,直接在Xib中設(shè)置,如同設(shè)置Frame一樣簡單。具體的用法請在 Github上搜一搜,絕對會給你想象不到的驚喜。
WMAddressPicker,需依賴 HandyJSON(用于解析地址 json 數(shù)據(jù)) 和 IBAnimatable(模態(tài)控制器),如果不想導(dǎo)入 IBAnimatable,可自行寫模態(tài)轉(zhuǎn)場動畫
效果圖:

WMAddressPicker.gif
使用
class ViewController: UIViewController {
@IBOutlet weak var addressLabel: UILabel!
/// 懶加載
lazy var addressPicker: WMAddressPicker = {
let nib = UINib(nibName: "WMAddressPicker", bundle: nil)
let picker = nib.instantiate(withOwner: nil, options: nil).first as! WMAddressPicker
picker.modalSize = (width: .full, height: .threeQuarters)
picker.modalPosition = .bottomCenter
picker.cornerRadius = 10
/// 該回調(diào)方法可以在本類任意地方寫
picker.selectedAreaCompleted = { [weak self] (province, city, district) in
self?.addressLabel.text = province + " " + city + " " + district
}
return picker
}()
/// 調(diào)用
@IBAction func selectButonClicked(_ sender: Any) {
self.present(addressPicker, animated: true, completion: nil)
}
}
GitHub:WMAddressPicker