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 {
var searchView: UITextField!
var sureButton: UIButton!
var tableView: UITableView!
var alertLabel: UILabel!
var searchDataSource: [YHCompanyModelListModel]?
var viewModel: YHCompanyViewModel?
......@@ -36,7 +37,7 @@ class YHCompanySelectViewController: YHBaseViewController {
let bgView = {
let view = UIView()
view.backgroundColor = UIColor(hex: 0xf8f9fb)
view.layer.cornerRadius = 21
view.layer.cornerRadius = 20.5
return view
}()
view.addSubview(bgView)
......@@ -51,9 +52,10 @@ class YHCompanySelectViewController: YHBaseViewController {
let searchBar = UITextField()
searchBar.placeholder = "请输入用人单位全称"
searchBar.backgroundColor = UIColor(hex: 0xf8f9fb)
searchBar.font = UIFont.PFSC_R(ofSize: 14)
searchBar.keyboardType = .default
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.leftViewMode = .always
searchBar.clearButtonMode = .always
......@@ -73,6 +75,7 @@ class YHCompanySelectViewController: YHBaseViewController {
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 16)
button.contentHorizontalAlignment = .center
button.setTitle("保存", for: .normal)
button.titleLabel?.font = UIFont.PFSC_M(ofSize: 12)
button.setTitleColor( UIColor(hex:0xffffff), for: .normal)
button.layer.cornerRadius = 16.5
button.addTarget(self, action: #selector(submit), for: .touchUpInside)
......@@ -83,8 +86,9 @@ class YHCompanySelectViewController: YHBaseViewController {
make.centerY.equalTo(searchView.snp.centerY)
make.height.equalTo(33)
make.width.equalTo(66)
make.right.equalTo(-16)
make.right.equalTo(-20)
}
sureButton.addYinHeGradualLayer()
tableView = {
let tableView = UITableView(frame:.zero, style:.plain)
......@@ -104,6 +108,24 @@ class YHCompanySelectViewController: YHBaseViewController {
make.bottom.equalTo(-k_Height_safeAreaInsetsBottom() - 64)
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() {
......@@ -118,15 +140,29 @@ extension YHCompanySelectViewController: UITextFieldDelegate {
func textFieldDidChangeSelection(_ textField: UITextField) {
if textField.text == "" {
tableView.isHidden = true
alertLabel.isHidden = true
} else {
viewModel?.requestCompany(textField.text ?? "") { [weak self] success, error in
guard let self = self else { return }
self.searchDataSource = success
self.tableView.isHidden = false
self.tableView.reloadData()
if success?.count == 0 {
self.alertLabel.isHidden = false
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 {
......@@ -136,12 +172,13 @@ extension YHCompanySelectViewController: UITableViewDelegate, UITableViewDataSou
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
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
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 44
return 40
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
......@@ -180,15 +217,16 @@ class YHCompanyTableViewCell: UITableViewCell {
func setupUI() {
titleLabel = {
let label = UILabel()
label.font = UIFont.PFSC_R(ofSize: 13)
label.font = UIFont.PFSC_R(ofSize: 14)
label.textColor = UIColor.mainTextColor
label.numberOfLines = 0
return label
}()
contentView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalTo(22)
make.centerY.equalToSuperview()
make.height.equalTo(20)
make.top.bottom.equalToSuperview()
make.left.equalTo(21)
make.right.equalTo(-21)
}
}
}
......
......@@ -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