Commit 418bc524 authored by David黄金龙's avatar David黄金龙

Merge branch 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS into develop

* 'develop' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS:
  选择公司逻辑和UI
parents 9a4e9ffa 2e3f6165
...@@ -14,6 +14,7 @@ class YHCompanySelectViewController: YHBaseViewController { ...@@ -14,6 +14,7 @@ class YHCompanySelectViewController: YHBaseViewController {
var searchView: UITextField! var searchView: UITextField!
var sureButton: UIButton! var sureButton: UIButton!
var tableView: UITableView! var tableView: UITableView!
var alertLabel: UILabel!
var searchDataSource: [YHCompanyModelListModel]? var searchDataSource: [YHCompanyModelListModel]?
var viewModel: YHCompanyViewModel? var viewModel: YHCompanyViewModel?
...@@ -36,7 +37,7 @@ class YHCompanySelectViewController: YHBaseViewController { ...@@ -36,7 +37,7 @@ class YHCompanySelectViewController: YHBaseViewController {
let bgView = { let bgView = {
let view = UIView() let view = UIView()
view.backgroundColor = UIColor(hex: 0xf8f9fb) view.backgroundColor = UIColor(hex: 0xf8f9fb)
view.layer.cornerRadius = 21 view.layer.cornerRadius = 20.5
return view return view
}() }()
view.addSubview(bgView) view.addSubview(bgView)
...@@ -51,9 +52,10 @@ class YHCompanySelectViewController: YHBaseViewController { ...@@ -51,9 +52,10 @@ class YHCompanySelectViewController: YHBaseViewController {
let searchBar = UITextField() let searchBar = UITextField()
searchBar.placeholder = "请输入用人单位全称" searchBar.placeholder = "请输入用人单位全称"
searchBar.backgroundColor = UIColor(hex: 0xf8f9fb) searchBar.backgroundColor = UIColor(hex: 0xf8f9fb)
searchBar.font = UIFont.PFSC_R(ofSize: 14)
searchBar.keyboardType = .default searchBar.keyboardType = .default
searchBar.delegate = self searchBar.delegate = self
searchBar.layer.cornerRadius = 21 searchBar.layer.cornerRadius = 20.5
searchBar.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 16, height: 42)) searchBar.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 16, height: 42))
searchBar.leftViewMode = .always searchBar.leftViewMode = .always
searchBar.clearButtonMode = .always searchBar.clearButtonMode = .always
...@@ -73,6 +75,7 @@ class YHCompanySelectViewController: YHBaseViewController { ...@@ -73,6 +75,7 @@ class YHCompanySelectViewController: YHBaseViewController {
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 16) button.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
button.contentHorizontalAlignment = .center button.contentHorizontalAlignment = .center
button.setTitle("保存", for: .normal) button.setTitle("保存", for: .normal)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 12)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal) button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.layer.cornerRadius = 16.5 button.layer.cornerRadius = 16.5
button.addTarget(self, action: #selector(submit), for: .touchUpInside) button.addTarget(self, action: #selector(submit), for: .touchUpInside)
...@@ -83,8 +86,9 @@ class YHCompanySelectViewController: YHBaseViewController { ...@@ -83,8 +86,9 @@ class YHCompanySelectViewController: YHBaseViewController {
make.centerY.equalTo(searchView.snp.centerY) make.centerY.equalTo(searchView.snp.centerY)
make.height.equalTo(33) make.height.equalTo(33)
make.width.equalTo(66) make.width.equalTo(66)
make.right.equalTo(-16) make.right.equalTo(-20)
} }
sureButton.addYinHeGradualLayer()
tableView = { tableView = {
let tableView = UITableView(frame:.zero, style:.plain) let tableView = UITableView(frame:.zero, style:.plain)
...@@ -104,6 +108,24 @@ class YHCompanySelectViewController: YHBaseViewController { ...@@ -104,6 +108,24 @@ class YHCompanySelectViewController: YHBaseViewController {
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 64) make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 64)
make.left.right.equalTo(view) make.left.right.equalTo(view)
} }
alertLabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 12)
label.textColor = UIColor(hex: 0x949494)
label.numberOfLines = 0
label.text = "暂未检索到相关企业,请准确、完整输入您的企业名称"
label.textAlignment = .center
label.isHidden = true
return label
}()
view.addSubview(alertLabel)
alertLabel.snp.makeConstraints { make in
make.left.equalTo(21)
make.right.equalTo(-21)
make.height.equalTo(17)
make.top.equalTo(searchView.snp.bottom).offset(21)
}
} }
@objc func submit() { @objc func submit() {
...@@ -118,15 +140,29 @@ extension YHCompanySelectViewController: UITextFieldDelegate { ...@@ -118,15 +140,29 @@ extension YHCompanySelectViewController: UITextFieldDelegate {
func textFieldDidChangeSelection(_ textField: UITextField) { func textFieldDidChangeSelection(_ textField: UITextField) {
if textField.text == "" { if textField.text == "" {
tableView.isHidden = true tableView.isHidden = true
alertLabel.isHidden = true
} else { } else {
viewModel?.requestCompany(textField.text ?? "") { [weak self] success, error in viewModel?.requestCompany(textField.text ?? "") { [weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
self.searchDataSource = success if success?.count == 0 {
self.tableView.isHidden = false self.alertLabel.isHidden = false
self.tableView.reloadData() self.tableView.isHidden = true
} else {
self.searchDataSource = success
self.tableView.isHidden = false
self.tableView.reloadData()
}
} }
} }
} }
func textFieldShouldClear(_ textField: UITextField) -> Bool {
tableView.isHidden = true
alertLabel.isHidden = true
searchDataSource = []
textField.text = ""
return true
}
} }
extension YHCompanySelectViewController: UITableViewDelegate, UITableViewDataSource { extension YHCompanySelectViewController: UITableViewDelegate, UITableViewDataSource {
...@@ -136,12 +172,13 @@ extension YHCompanySelectViewController: UITableViewDelegate, UITableViewDataSou ...@@ -136,12 +172,13 @@ extension YHCompanySelectViewController: UITableViewDelegate, UITableViewDataSou
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withClass: YHCompanyTableViewCell.self) let cell = tableView.dequeueReusableCell(withClass: YHCompanyTableViewCell.self)
cell.titleLabel.text = searchDataSource?[indexPath.row].company_name let newString = searchDataSource?[indexPath.row].company_name?.highlight(keyWords: searchView.text, highlightColor: UIColor.brandMainColor)
cell.titleLabel.attributedText = newString
return cell return cell
} }
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 44 return 40
} }
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
...@@ -180,15 +217,16 @@ class YHCompanyTableViewCell: UITableViewCell { ...@@ -180,15 +217,16 @@ class YHCompanyTableViewCell: UITableViewCell {
func setupUI() { func setupUI() {
titleLabel = { titleLabel = {
let label = UILabel() let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 13) label.font = UIFont.PFSC_R(ofSize: 14)
label.textColor = UIColor.mainTextColor label.textColor = UIColor.mainTextColor
label.numberOfLines = 0
return label return label
}() }()
contentView.addSubview(titleLabel) contentView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in titleLabel.snp.makeConstraints { make in
make.left.equalTo(22) make.top.bottom.equalToSuperview()
make.centerY.equalToSuperview() make.left.equalTo(21)
make.height.equalTo(20) make.right.equalTo(-21)
} }
} }
} }
......
...@@ -187,3 +187,41 @@ extension String { ...@@ -187,3 +187,41 @@ extension String {
} }
} }
extension String {
/// 指定关键词高亮
/// - Parameter keyWords: 关键词
/// - Parameter color: 高亮颜色
func highlight(keyWords: String?, highlightColor color: UIColor) -> NSAttributedString {
let string: String = self
let attributeString = NSMutableAttributedString(string: string)
guard let keyWords = keyWords else { return attributeString }
let attribute: [NSAttributedString.Key: Any] = [.foregroundColor: color]
// 需要改变的文本
let ranges = ranges(of: keyWords, options: .caseInsensitive)
for range in ranges where range.location + range.length <= string.count {
attributeString.addAttributes(attribute, range: range)
}
return attributeString
}
/// 查找字符串中子字符串的NSRange
/// - Parameters:
/// - substring: 子字符串
/// - options: 匹配选项
/// - locale: 本地化
/// - Returns: 子字符串的NSRange数组
func ranges(of substring: String, options: CompareOptions = [], locale: Locale? = nil) -> [NSRange] {
var ranges: [Range<Index>] = []
while let range = range(of: substring, options: options, range: (ranges.last?.upperBound ?? self.startIndex)..<self.endIndex, locale: locale) {
ranges.append(range)
}
// [range]转换为[NSRange]返回
return ranges.compactMap({NSRange($0, in: self)})
}
/// range转换为NSRange
func toNSRange(from range: Range<String.Index>) -> NSRange {
return NSRange(range, in: self)
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment