UIImageView不会通过约束调整大小

时间:2014-09-17 13:02:06

标签: ios objective-c xcode

我完全迷失了这种自动布局。 我需要在屏幕大小,屏幕宽度和动态高度的单元格中设置集合视图。

我的屏幕大小为UICollectionView。 我在storyboard创建了一个单元格。在运行期间,单元格的高度是动态高度变化:

- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout*)collectionViewLayout
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath

单元格在其超级视图(集合视图)约束中具有尾随和前导空间,并且我在屏幕宽度中获得了预期的大小(尽管我可能做错了)。

在该单元格内部有一个UIImageView(已检查clipped subviews)。我想要做的是将此图像视图的宽度设置为单元格的宽度,并将其高度设置为动态。

所以,我设置图像高度约束出口,我在代码中更改。它很棒。 图片视图的 从顶部,左侧和右侧固定到单元格。

实际发生的是,在模拟器中,一切都已到位并且运行良好。 在设备中,图像视图小于单元格大小(单元格尺寸与屏幕尺寸正确),因此图像视图从(0,0)开始按预期方式,具有正确的高度,但是宽度不是单元的大小,而是更小。 (2/3)。

修改 哇 !我发现了一些令人惊讶的事情。如果我从图像视图中删除了尾随空格到单元格它比在设备上工作而不是在模拟器上工作。如果我将其添加回来,它可以在模拟器上运行,而不是在设备上运行。 这是什么?

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我唯一的解决方案是设置图像视图宽度的约束,并设置其出口并在运行时更改它。

我仍然不知道为什么当细胞改变它的大小时,与它对齐的图像视图也不会改变。 我有一个想法,它可以在模拟器中工作,但不能在设备上工作,因为在模拟器中,单元大小在运行时之前是已知的,而在设备上则不是。

因此,为您拥有的每个动态视图设置约束宽度/高度。它解决了许多问题,并给你自由。