This commit is contained in:
澜声世纪 2025-12-27 14:33:40 +08:00
parent 17669d1412
commit acc897d6a8
2 changed files with 28 additions and 19 deletions

View File

@ -16,18 +16,21 @@ class NRExploreNovelGenresViewController: NRViewController {
lazy var collectionViewLayout: UICollectionViewCompositionalLayout = { lazy var collectionViewLayout: UICollectionViewCompositionalLayout = {
let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .fractionalWidth(0.5), heightDimension: .fractionalHeight(1))) let layout = UICollectionViewCompositionalLayout(sectionProvider: { (section, environment) in
let contentWidth = environment.container.effectiveContentSize.width
let witemWidth = floor((contentWidth - 8 - 24) / 2)
let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(48)), subitems: [item]) let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .absolute(witemWidth), heightDimension: .fractionalHeight(1)))
group.interItemSpacing = .fixed(8)
let section = NSCollectionLayoutSection(group: group) let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(48)), subitems: [item])
section.interGroupSpacing = 8 group.interItemSpacing = .fixed(8)
section.contentInsets = .init(top: 0, leading: 12, bottom: 0, trailing: 12)
let configuration = UICollectionViewCompositionalLayoutConfiguration() let section = NSCollectionLayoutSection(group: group)
section.interGroupSpacing = 8
section.contentInsets = .init(top: 0, leading: 12, bottom: 0, trailing: 12)
let layout = UICollectionViewCompositionalLayout(section: section, configuration: configuration) return section
})
return layout return layout
}() }()

View File

@ -30,16 +30,16 @@ class NRStoreCoinsView: UIView {
let config = UICollectionViewCompositionalLayoutConfiguration() let config = UICollectionViewCompositionalLayoutConfiguration()
config.interSectionSpacing = 12 config.interSectionSpacing = 12
let layout = UICollectionViewCompositionalLayout { [weak self] section, _ in let layout = UICollectionViewCompositionalLayout { [weak self] section, environment in
guard let self = self else { return nil} guard let self = self else { return nil}
guard let model = dataArr[section].first else { return nil } guard let model = dataArr[section].first else { return nil }
if model.buy_type == .subCoins { if model.buy_type == .subCoins {
return self.coinsBigLayoutSection() return self.coinsBigLayoutSection()
} else if model.size == .big { } else if model.size == .big {
return self.bigLayoutSection() return self.bigLayoutSection(environment: environment)
} else { } else {
return self.smallLayoutSection() return self.smallLayoutSection(environment: environment)
} }
} }
layout.configuration = config layout.configuration = config
@ -156,8 +156,11 @@ extension NRStoreCoinsView {
extension NRStoreCoinsView { extension NRStoreCoinsView {
private func bigLayoutSection() -> NSCollectionLayoutSection { private func bigLayoutSection(environment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection {
let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .fractionalWidth(0.5), heightDimension: .fractionalHeight(1))) let containerWidth = environment.container.effectiveContentSize.width
let itemWidth = floor((containerWidth - 32 - 15) / 2)
let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .absolute(itemWidth), heightDimension: .fractionalHeight(1)))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(100)), subitems: [item]) let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(100)), subitems: [item])
group.interItemSpacing = .fixed(15) group.interItemSpacing = .fixed(15)
@ -168,8 +171,11 @@ extension NRStoreCoinsView {
return layoutSection return layoutSection
} }
private func smallLayoutSection() -> NSCollectionLayoutSection { private func smallLayoutSection(environment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection {
let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .fractionalWidth(1 / 3), heightDimension: .fractionalHeight(1))) let containerWidth = environment.container.effectiveContentSize.width
let itemWidth = floor((containerWidth - 32 - 30) / 3)
let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .absolute(itemWidth), heightDimension: .fractionalHeight(1)))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(84)), subitems: [item]) let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(84)), subitems: [item])
group.interItemSpacing = .fixed(15) group.interItemSpacing = .fixed(15)