使用自动布局时,如何让我的 UICollectionView 与我的设备宽度相同?

Posted

技术标签:

【中文标题】使用自动布局时,如何让我的 UICollectionView 与我的设备宽度相同?【英文标题】:How can I get my UICollectionView to be the same width as my device when using Auto Layout? 【发布时间】:2015-04-10 01:13:42 【问题描述】:

我在故事板编辑器中创建了一个UICollectionView,并将其添加到我的(自定义)ViewController。就像故事板中的每个视图控制器一样,它表示大小为 600x600,因此占据整个视图的 UICollectionView 也是 600x600。

这是不正确的,因为我正在编写一个 iPhone 应用程序,所以实际尺寸应该是 320x568!

因此,当我将项目添加到我的收藏时,它们会被放置在屏幕右侧之外。例如,我首先添加一个具有 160x213 大小的图像的单元格。它是左对齐的,正好占据屏幕的左半部分。当我添加下一个图像时,有一个巨大的间隙,它出现在左侧,部分被切断。我希望第三张图片出现在第一张图片的下方,但它根本没有出现。我相信它在屏幕的右侧。这意味着UICollectionView 的大小是 600x600 而不是 320x568。

我应该提到我已经尝试了我能想到的一切来解决这个问题。例如:

我尝试调整集合视图的大小:

self.photoCollection.frame = CGRectMake(0, 0, 320, 568);

我尝试在情节提要编辑器中取消选中“使用大小类”。

如果我取消选中“使用自动布局”似乎可以工作,但我想使用自动布局。我如何获得这项工作?

【问题讨论】:

【参考方案1】:
    您可以在情节提要中设置视图的“模拟指标”,如下所示。就我个人而言,我更喜欢使用 3.5/4 英寸来构建我的布局,与自动布局一样,我只需对元素添加一些约束,ios 将自动支持 4.7 和 5 英寸的屏幕尺寸。

    我认为您应该在 Google 上搜索一些“自动布局”教程,而且我认为您学习起来并不难 :D。例如,如果您想将集合视图框架设置为等于您的视图框架。你可以这样做

如有任何后续问题,请随时提出,干杯!

【讨论】:

谢谢!这解决了我的大部分问题,但自动布局似乎仍然有点混乱。首先,我注意到我必须将 UICollectionView 的垂直空间设置为 -64。当它设置为 0 时,第一个单元格不会与左上角对齐,而是向下偏移相当多。我假设这与我有一个导航视图控制器的事实有关,所以顶部有一个栏。不过,我不明白为什么这会影响集合视图。 其次,我的单元格(我从 UICollectionViewCell 子类化)仅包含一个 UIImageView,我想填充整个单元格。当我将两侧的 4 个约束设置为“0”时,图像周围仍有相当大的边距。如果我将单元格的大小和 UIImageView 硬编码为完全相同的大小(图像的大小),则没有边距。我正在使用方面拟合。 参考你的-64偏移问题,1.你可以看看我的image1。右侧栏有一个名为“Extend Edges”的选项,取消选中“Under Top Bars”。 2.您也可以检查您的视图是否嵌入到导航控制器中:D 细胞问题可以参考这个问题***.com/questions/18746929/…

以上是关于使用自动布局时,如何让我的 UICollectionView 与我的设备宽度相同?的主要内容,如果未能解决你的问题,请参考以下文章

隐藏视图时如何使用自动布局移动其他视图?

自动布局:窗口调整大小时如何更改框架的原点?

以编程方式修改自动布局约束时视图不更新

自动调整嵌入在 UITableView 中的 UICollectionView 单元格不起作用

scrollRectToVisible UITextField 不使用自动布局滚动

UIScrollView 使用自动布局