控制器
extension SportsFilterViewController {
func firstLetterSortedArray() {
var sectionArray = Array<Array<Any>>()
let models = SportsFilterModel.testmodels()
let collation = UILocalizedIndexedCollation.current()
titles = collation.sectionTitles
for _ in titles {
sectionArray.append(Array<Any>())
}
for model in models {
let section = collation.section(for: model, collationStringSelector: NSSelectorFromString("name"))
sectionArray[section].append(model)
}
for var (i, subArray) in sectionArray.enumerated() {
let sortArray = collation.sortedArray(from: subArray, collationStringSelector: NSSelectorFromString("name"))
subArray.removeAll()
subArray = sortArray
debugPrint("subArray = \(subArray.count)")
if subArray.count == 0 {
let emptyTitle = titles[i]
emptyTitles.append(emptyTitle)
} else if let model = subArray.first as? SportsFilterModel {
model.isLastIndex = true
subArray[0] = model
}
}
for title in emptyTitles {
if let index = titles.firstIndex(of: title) {
titles.remove(at: index)
}
}
sectionArray = sectionArray.filter{ !($0.isEmpty) }
sectionModels = sectionArray
}
func addIndexBar() {
let indexBar = IndexBar.init(frame: CGRect(x: view.bounds.width - 20.0, y: 0, width: 20.0, height: view.bounds.height - kTopBarHeight))
indexBar.configure = { configure in
configure.sectionWH = 18.0
configure.titleFont = UIFont.systemFont(ofSize: 12)
configure.backgroundColorForSelected = kThemeRedColor!
configure.bubbleConfigure.backgroundColor = kThemeRedColor!
}
indexBar.setData(titles, tableView: groupedTableView)
view.addSubview(indexBar)
}
}
Header头部视图圆角
extension SportsFilterHeaderFooterView {
private func initSubViews() {
self.addSubview(containerView)
containerView.addSubview(leftLineView)
containerView.addSubview(titleLabel)
}
private func addConstants() {
containerView.snp.makeConstraints { make in
make.top.equalTo(self).offset(10)
make.bottom.equalTo(self)
make.left.right.equalTo(self).inset(10)
}
}
}
section最后一个单元格圆角
class SportsFilterCell: UITableViewCell {
override func layoutSubviews() {
super.layoutSubviews()
if let model = sportsFilterModel, model.isLastIndex == true {
containerView.addCorner(roundingCorners: [UIRectCorner.bottomLeft, UIRectCorner.bottomRight], cornerSize: CGSize(width: 10.0, height: 10.0))
} else {
containerView.addCorner(roundingCorners: [UIRectCorner.bottomLeft, UIRectCorner.bottomRight], cornerSize: CGSize.zero)
}
}
}
效果图:
