【发布时间】:2022-02-12 14:27:15
【问题描述】:
如您所见,此布局具有相对于大小的单元格 0、1、2、0、1、2、0、1、2 的模式。我希望我的布局将 0、1、2、1、2、1、2、1、2 描绘为相对于大小的模式。 换句话说,只要第一个单元格大,其他单元格就应该占用一个大小以适合 2 的行。 我当前的布局代码:
import UIKit
struct Layout {
private struct LayoutConstants {
static let largeGroupHeight: CGFloat = 406
static let leadingInset: CGFloat = 8
static let topInset: CGFloat = 10
static let bottomInset: CGFloat = 15
static let itemCount = 2
static let fractionalConstant: CGFloat = 1.0
static let fractionalWidthLeading: CGFloat = 0.67
static let fractionalWidthTrailing: CGFloat = 1.0
static let fractionalHeightTrailing: CGFloat = 0.3
static let fractionalContainerWidth: CGFloat = 1.2
static let groupFractionalHeight: CGFloat = 0.33
}
func layoutSection() -> NSCollectionLayoutSection {
let leadingItem = NSCollectionLayoutItem(
layoutSize: NSCollectionLayoutSize(
widthDimension: .fractionalWidth(LayoutConstants.fractionalWidthLeading),
heightDimension: .fractionalHeight(LayoutConstants.fractionalConstant)))
leadingItem.contentInsets = NSDirectionalEdgeInsets(top: LayoutConstants.topInset,
leading: LayoutConstants.topInset,
bottom: LayoutConstants.bottomInset,
trailing: LayoutConstants.leadingInset)
let trailingItem = NSCollectionLayoutItem(
layoutSize: NSCollectionLayoutSize(
widthDimension: .fractionalWidth(LayoutConstants.fractionalWidthTrailing),
heightDimension: .fractionalHeight(LayoutConstants.fractionalHeightTrailing)))
trailingItem.contentInsets = NSDirectionalEdgeInsets(top: LayoutConstants.topInset,
leading: LayoutConstants.leadingInset,
bottom: LayoutConstants.bottomInset,
trailing: LayoutConstants.leadingInset)
let trailingGroup = NSCollectionLayoutGroup.vertical(
layoutSize: NSCollectionLayoutSize(
widthDimension: .fractionalWidth(LayoutConstants.groupFractionalHeight),
heightDimension: .fractionalHeight(LayoutConstants.fractionalConstant)),
subitem: trailingItem,
count: LayoutConstants.itemCount)
var subitems: [NSCollectionLayoutItem] = []
subitems.append(leadingItem)
subitems.append(trailingGroup)
let containerGroup = NSCollectionLayoutGroup.horizontal(
layoutSize: NSCollectionLayoutSize(
widthDimension: .fractionalWidth(LayoutConstants.fractionalContainerWidth),
heightDimension: .absolute(LayoutConstants.largeGroupHeight)),
subitems: subitems)
let section = NSCollectionLayoutSection(group: containerGroup)
section.orthogonalScrollingBehavior = .continuous
return section
}
}
【问题讨论】:
标签: swift uicollectionview uicollectionviewlayout uicollectionviewflowlayout uicollectionviewcompositionallayout