UICollectionViewCell sizeForRowAtIndexPath 和并排的两个视图

Posted

技术标签:

【中文标题】UICollectionViewCell sizeForRowAtIndexPath 和并排的两个视图【英文标题】:UICollectionViewCell sizeForRowAtIndexPath and Two Views side by side 【发布时间】:2017-02-13 05:11:33 【问题描述】:

我正在尝试完成 Imgur 应用程序在其关于视图中的 UICollectionViewCells 中所做的事情。见下文:

我想要 1 个 UICollectionViewCell 但不是单元格内的 3 个视图部分,我只想要两个(cmets 和帖子)。

对于我的 UICollectionView,我在运行时调整单元格的大小,使其几乎适合整个屏幕,但为了边距而减去一点,因为我想制作像 Imgur 这样的卡片视图。

我按照这个 *** 帖子并排获得了 2 个视图:ios Autolayout: two buttons of equal width, side by side

我能够并排获得 2 个等宽的视图。以下是它们在故事板中的样子:

但是当我运行该应用程序时,由于自动调整大小,我的视图被拉伸了。见下文:

如何让视图在视图之前和之后具有相等的宽度和相等的间距?

【问题讨论】:

也有相等的间距和相等的宽度和高度。那你还想要什么? 是的,它们确实具有相等的间距、宽度和高度,但宽度是不正确的宽度。注意我的顶部和底部图像之间的区别。顶部有方形灰色视图,底部有矩形灰色视图,表示视图正在被拉伸。我不想那样。 是的,你是对的。那么您是否尝试过UICollectionViewDelegateFlowLayout 作为解决方案。?如果你能告诉我你的这个布局的故事板图像就更好了。 是的,我正在使用 UICollectionViewDelegateFlowLayout 并在运行时使用委托方法 collectionView: sizeForItemAt 方法调整 UICollectionViewCell 的大小。 你的方法绝对正确。因此,要找出问题点,请添加故事板图像和代码工作。 【参考方案1】:

您可以使用 UIStackView。它提供了一种简单的方法来水平或垂直布置一系列视图。

选择这两个视图并单击故事板画布右下角自动布局工具栏中的新堆栈按钮:

从顶部、左侧、右侧和底部对您的堆栈视图进行约束。然后让堆栈视图的 Attributes Inspector 如下所示:

注意。如果您想了解有关 Stack View 的更多信息,请遵循 Ray Wenderlich 中的这个精彩教程:https://www.raywenderlich.com/114552/uistackview-tutorial-introducing-stack-views

相信我,一旦你学会了堆栈视图,与自动布局相关的大部分复杂性都会变得微不足道

【讨论】:

哇,非常感谢。我已经可以看出这真的很有帮助!

以上是关于UICollectionViewCell sizeForRowAtIndexPath 和并排的两个视图的主要内容,如果未能解决你的问题,请参考以下文章

在 UICollectionViewCell 中添加模糊

UICollectionViewCell与UIScrollView取消didSelectItemAtIndexPath

UICollectionViewCell 子类问题

重用 UICollectionViewCell

UICollectionViewCell 中的 Outlet 为零

UICollectionViewCell 边框/阴影