pujiaxin33 / JXSegmentedView

A powerful and easy to use segmented view (segmentedcontrol, pagingview, pagerview, pagecontrol, categoryview) (腾讯新闻、今日头条、QQ音乐、网易云音乐、京东、爱奇艺、腾讯视频、淘宝、天猫、简书、微博等所有主流APP分类切换滚动视图)
MIT License
2.69k stars 370 forks source link

需要设置非选中cell的背景色和边框高度、圆角,区别于选中状态的cell,有实现方法吗? #151

Closed aiiaji closed 2 months ago

SSnowCat commented 3 years ago

你好 你实现了嘛

janicezhw commented 1 year ago

自定义DataSource 和 UICollectViewCell . 可以实现

ding0039 commented 1 year ago

简单的可以修改cell颜色来达到效果 for index in 0..<self.dataSource.titles.count { if let cell = self.segmentedView.collectionView.cellForItem(at: IndexPath(item: index, section: 0)) cell.contentView.backgroundColor = .red cell.contentView.layer.cornerRadius = 16 } }

ghost commented 1 year ago

自定义DataSource 和 UICollectViewCell . 可以实现

可以举个例子吗?

smalls0098 commented 1 year ago

防止大家踩坑,我给大家搞了一个出来了。

import UIKit
import JXSegmentedView

open class ReserveJXSegmentedTitleDataSource: JXSegmentedTitleDataSource {

    open override func segmentedView(_ segmentedView: JXSegmentedView, cellForItemAt index: Int) -> JXSegmentedBaseCell {
        let cell = super.segmentedView(segmentedView, cellForItemAt: index)
        cell.layer.cornerRadius = 5
        return cell
    }

    open override func registerCellClass(in segmentedView: JXSegmentedView) {
        segmentedView.collectionView.register(ReserveJXSegmentedTitleCell.self, forCellWithReuseIdentifier: "cell")
    }

}

open class ReserveJXSegmentedTitleCell: JXSegmentedTitleCell {

    open override func reloadData(itemModel: JXSegmentedBaseItemModel, selectedType: JXSegmentedViewItemSelectedType) {
        if itemModel.isSelected {
            backgroundColor = .nw_main
        } else {
            backgroundColor = .nw_FAFAFA
        }
        super.reloadData(itemModel: itemModel, selectedType: selectedType)
    }

}

就是没动画效果,然后需要把JXSegmentedView的indicators设置为[],大家按照自己项目需求搞搞

smalls0098 commented 1 year ago

@LeeWiHong