图像不适合收集Cell

问题描述 投票:-1回答:1

在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。提前致谢。

swift image layout uicollectionview
1个回答
0
投票

尤里卡。最后我确实解决了这个问题。使用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)
© www.soinside.com 2019 - 2024. All rights reserved.