项目中有添加收货地址功能,由于刚进行Swift开发,没有存货,系统的PickerView界面太过于... 你懂的,
也没在网上找到看的顺眼且合适的,项目比较急,索性就自己封装个,就是WMAddressPicker,谢谢简书,给有需要的猿类参考或者使用。
在开始介绍前,先介绍两个第三方框架,HandyJSON 和 IBAnimatable,前者就不必说了,Swift开发必备,百度搜索一大片,浅谈的、深究的,各种介绍,足够你了解HandyJSON,阿里出品必属精品。
对于IBAnimatable,谁用过谁知道,强大、使用简单、便捷、效果炫酷的转场动画框架,使用方式如Swift标准库一样优雅,还支持扩展 Xib、Storyboard,添加、修改一些原生Xib、Storyboard不具备的属性,最简单的例子,给控件设置 cornerRadius,直接在Xib中设置,如同设置Frame一样简单。具体的用法请在 Github上搜一搜,绝对会给你想象不到的惊喜。
WMAddressPicker,需依赖 HandyJSON(用于解析地址 json 数据) 和 IBAnimatable(模态控制器),如果不想导入 IBAnimatable,可自行写模态转场动画
效果图:
使用
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
/// 该回调方法可以在本类任意地方写
picker.selectedAreaCompleted = { [weak self] (province, city, district) in
self?.addressLabel.text = province + " " + city + " " + district
}
return picker
}()
/// 调用
@IBAction func selectButonClicked(_ sender: Any) {
self.present(addressPicker, animated: true, completion: nil)
}
}
GitHub:WMAddressPicker