【问题标题】:Set vertical position for UILabel in UICollectionViewCell using UILayoutGuide使用 UILayoutGuide 在 UICollectionViewCell 中设置 UILabel 的垂直位置
【发布时间】:2018-02-06 06:19:33
【问题描述】:

我对 UILayoutGuide 完全陌生。我想在 imageView 下方的空白区域中间放置一个 UILabel,它是 imageView 和 UILabel 的父视图(参见下面的视图层次结构)。

通常,我会添加另一个视图并将顶部约束设置为 UIImageView 并将底部约束设置为底部边缘,然后将标签水平和垂直居中于视图。

但我决定使用 UILayoutGuide 来实现它。这是我的代码:

override func awakeFromNib() {
        super.awakeFromNib()
        let topGuide = UILayoutGuide()
        let bottomGuide = UILayoutGuide()
        self.view.addLayoutGuide(topGuide)
        self.view.addLayoutGuide(bottomGuide)
        topGuide.bottomAnchor.constraint(equalTo: title.topAnchor).isActive = true
        bottomGuide.topAnchor.constraint(equalTo: title.bottomAnchor).isActive = true
        self.view.layoutIfNeeded()
}

结果是我的 UILabel 根本不显示。我做错了什么?

【问题讨论】:

  • 想要使用情节提要还是以编程方式?
  • Interface Builder 中没有布局指南,那么屏幕截图是做什么用的?另请注意,屏幕截图告诉您您的约束是非法的。

标签: ios swift uicollectionview uilayoutguide


【解决方案1】:

按照步骤 -

1) 添加一个带有前导、尾随和顶部约束 = 0 的 imageView,并为图像提供纵横比,以便它会根据单元格自动获取大小

2) 现在在您的 imageView 下方添加一个 uiView,并为其设置 0 个约束作为尾随、底部、前导和 0 约束到图像底部,如下所示,并将 uiView 颜色设置为 Clear,这样它就不会显示了

3) 现在在 UiView 中拖动一个标签并将其水平和垂直添加到 UiView 容器中。

结果会如预期的那样

请查看以下链接下载collectionViewCell的xib文件

Link - https://drive.google.com/a/erginus.com/file/d/0B2WiGVeE-REPakh3c21rWDlEWUU/view?usp=sharing

【讨论】:

  • 仅链接的答案很少有用。很高兴您提供了 OP 可以下载的内容,但这只是评论。对于您的答案,最好提供一个实际的解释(与您出色的屏幕截图一起使用)。
  • 好的,让我按照您的说法编辑答案以获得完整的详细信息,谢谢。那么我应该删除链接吗?因为我使用了发布问题的用户可能不容易配置的约束。这就是为什么我发布了一个链接让用户下载并查看答案
  • 正如我在问题中所说:我知道如何在 IB 中使用带有约束的虚拟视图来完成它。我想使用 UILayoutGuides 完成它。尽管如此,感谢您的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多