首页 > 解决方案 > 如何在 UICollectionViewCell 中有一个自动换行标签,其右锚点约束到单元格的右锚点?

问题描述

我正在制作一个自定义 UICollectionViewCell,在其中,我有一个可变长度的标签。我试图将标签限制在顶部、左侧和右侧的锚点上,这意味着它应该拉伸以适应这些但不能超出它们。但是,当我将右锚点设置在单元格的右侧时,而不是锚点的右侧被拉伸到或具有由单元格右侧确定的最大宽度,此约束会带来单元格的右侧锚点到标签的右侧锚点。

我该如何防止这种情况发生?

目前,我最初使用此功能设置单元格的大小:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: Feed.frame.width, height: 200)
}

这是标签的约束条件。

locationText.topAnchor.constraint(equalTo: locationIconImage.topAnchor, constant: 0).isActive = true
    locationText.leftAnchor.constraint(equalTo: locationIconImage.rightAnchor, constant: 8).isActive = true

    locationText.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -12).isActive = true

下面是保存集合视图的视图控制器是如何初始化的:

    override func viewDidLoad() {
    super.viewDidLoad()
    Feed.dataSource = self
    self.setUpFeed()
    Feed.collectionViewLayout = {
        let layout = UICollectionViewFlowLayout()
        let width = Feed.frame.width
        layout.estimatedItemSize = CGSize(width: width, height: 100)
        return layout
    }()
}

它看起来像什么:

在这里一切看起来都很好,单元格占据了屏幕的宽度,标签被限制在单元格上并环绕。

一

在这里,右锚约束将单元的右锚拉向自身。

在此处输入图像描述

标签: iosswiftxcodeautolayoutconstraints

解决方案


推荐阅读