Swift - UICollectionView:如何在标题中自动布局标签间距
Posted
技术标签:
【中文标题】Swift - UICollectionView:如何在标题中自动布局标签间距【英文标题】:Swift - UICollectionView: How to auto-layout the label spacing in the Header 【发布时间】:2016-07-24 15:01:34 【问题描述】:我正在尝试创建自定义日历,我需要在更改方向时更改标题标签的间距。
我正在使用以下代码来更改单元格之间的大小和间距,但是如何对标题中的标签执行相同的操作。标头是一个自定义类。
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
updateCollectionViewLayout(with: size)
private func updateCollectionViewLayout(with size: CGSize)
let itemSizeForPortraitMode : CGSize = CGSize(width: 40, height: 40)
let itemSizeForLandscapeMode: CGSize = CGSize(width: 40, height: 40)
var minimumItemSpacing: CGFloat
if let layout = calendarCollectionView.collectionViewLayout as? UICollectionViewFlowLayout
layout.itemSize = (size.width < size.height) ? itemSizeForPortraitMode : itemSizeForLandscapeMode
minimumItemSpacing = (size.width - (7 * 40)) / 6
layout.minimumInteritemSpacing = minimumItemSpacing
layout.invalidateLayout()
calendarCollectionView.updateConstraints()
感谢您的帮助。
【问题讨论】:
【参考方案1】:我找到了解决方案,我在我的标题自定义类中添加了一个函数:
override func layoutSubviews()
super.layoutSubviews()
var labelFrame = CGRect(x: 0.0, y: 43, width: self.bounds.size.width / 7.0, height: 20)
for lbl in self.subviews
if lbl.tag == 1 || lbl.tag == 2 || lbl.tag == 3 || lbl.tag == 4 || lbl.tag == 5 || lbl.tag == 6 || lbl.tag == 7
lbl.frame = labelFrame
labelFrame.origin.x += labelFrame.size.width
【讨论】:
以上是关于Swift - UICollectionView:如何在标题中自动布局标签间距的主要内容,如果未能解决你的问题,请参考以下文章
Swift:滚动时 UICollectionView 标题消失
swift UICollectionView + RxReachedBottom.swift
如何将 UIPageControl 连接到 UICollectionView (Swift)
Swift 4 UICollectionView 检测滚动结束