图像不适合收集Cell
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像不适合收集Cell相关的知识,希望对你有一定的参考价值。
在Swift 3.我的应用程序有一个表视图和一个详细视图与视图控制器。我在这里添加了一个集合视图。必须呈现一系列图像。如果在肖像中我检查缩放器中的内容模式以填充,则图像会很好地适应自己。在ladscape中,它适用于aspectFill。反之亦然,布局不合适。我在cellForItem中执行了以下操作:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = myCollection.dequeueReusableCell(withReuseIdentifier: "cellCollection", for: indexPath) as! CollectionViewCell
cell.cellImage.image = UIImage(named: array[indexPath.item])
if UIDevice.current.orientation.isLandscape{
cell.cellImage.contentMode = .scaleAspectFill
}
else if UIDevice.current.orientation.isPortrait{
cell.cellImage.contentMode = .scaleToFill
}
return cell
}
这是行不通的。可能是我从纵向到横向都有一些不一致的地方。我很感激你的帮助。如果你想看看git中的项目:[https://github.com/ricardovaldes/tareaFinalHoteles.git1。提前致谢。
答案
尤里卡。最后我确实解决了这个问题。使用sizeForItem,应用程序可以正常运行。我迷失或误导寻找改变图像内容模式的方法,但这不是正确的方法。旋转后调整大小的正确方法是:为此需要func willTransition toNewCollection:UITraitCollection。在里面创建一个UICollectionViewFlowLayout类型的变量布局。在有条件的帮助下,可以定义你想要旋转后的加法和加法。这篇文章对于那些好奇的人来说简洁明了:UICollectionView Cell Resizing on Device Rotation。这是我在项目中所做的实现:`
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.current.orientation.isLandscape,
let layout = myCollection.collectionViewLayout as? UICollectionViewFlowLayout{
let with = myCollection.frame.size.width
layout.itemSize = CGSize(width: with, height: 280)
layout.invalidateLayout()
}
else if UIDevice.current.orientation.isLandscape,
let layout = myCollection.collectionViewLayout as? UICollectionViewFlowLayout{
let with = myCollection.frame.size.width
layout.itemSize = CGSize(width: with/2, height: 280)
以上是关于图像不适合收集Cell的主要内容,如果未能解决你的问题,请参考以下文章
Swift UI集合视图 - 如何在Cell中显示“segued”用户输入?