123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- //
- // JXSegmentedDotDataSource.swift
- // JXSegmentedView
- //
- // Created by jiaxin on 2018/12/28.
- // Copyright © 2018 jiaxin. All rights reserved.
- //
- import UIKit
- open class JXSegmentedDotDataSource: JXSegmentedTitleDataSource {
- /// 数量需要和titles一致,控制红点是否显示
- open var dotStates = [Bool]()
- /// 红点的size
- open var dotSize = CGSize(width: 10, height: 10)
- /// 红点的圆角值,JXSegmentedViewAutomaticDimension等于dotSize.height/2
- open var dotCornerRadius: CGFloat = JXSegmentedViewAutomaticDimension
- /// 红点的颜色
- open var dotColor = UIColor.red
- /// dotView的默认位置是center在titleLabel的右上角,可以通过dotOffset控制X、Y轴的偏移
- open var dotOffset: CGPoint = CGPoint.zero
- open override func preferredItemModelInstance() -> JXSegmentedBaseItemModel {
- return JXSegmentedDotItemModel()
- }
- open override func preferredRefreshItemModel(_ itemModel: JXSegmentedBaseItemModel, at index: Int, selectedIndex: Int) {
- super.preferredRefreshItemModel(itemModel, at: index, selectedIndex: selectedIndex)
- guard let itemModel = itemModel as? JXSegmentedDotItemModel else {
- return
- }
- itemModel.dotOffset = dotOffset
- itemModel.dotState = dotStates[index]
- itemModel.dotColor = dotColor
- itemModel.dotSize = dotSize
- if dotCornerRadius == JXSegmentedViewAutomaticDimension {
- itemModel.dotCornerRadius = dotSize.height/2
- }else {
- itemModel.dotCornerRadius = dotCornerRadius
- }
- }
- //MARK: - JXSegmentedViewDataSource
- open override func registerCellClass(in segmentedView: JXSegmentedView) {
- segmentedView.collectionView.register(JXSegmentedDotCell.self, forCellWithReuseIdentifier: "cell")
- }
- open override func segmentedView(_ segmentedView: JXSegmentedView, cellForItemAt index: Int) -> JXSegmentedBaseCell {
- let cell = segmentedView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)
- return cell
- }
- }
|