繁体   English   中英

Swift-UICollectionView:如何在标题中自动布置标签间距

[英]Swift - UICollectionView: How to auto-layout the label spacing in the Header

我正在尝试创建自定义日历,更改方向后需要更改标题标签的间距。

我正在使用以下代码来更改单元格之间的大小和间距,但是如何对标题中的标签执行相同的操作。 标头是一个自定义类。

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()

    }
}

感谢帮助。

我找到了解决方案,我在标头自定义类中添加了一个函数:

 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
        }

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM