UICollectionView中的两个自定义单元格但第二个单元格的大小不正确

时间:2017-01-22 04:12:55

标签: ios swift

我是iOS开发的新手,我正在尝试创建一个PokeDex应用程序。我的主视图控制器有一个集合视图,它返回两种类型的自定义单元格。我的第一个称为选择器单元的单元格位于导航栏或标题栏的下方,无论哪个术语,我希望我的第二个自定义单元格(descriptioncell)立即位于选择单元格下方并占据整个屏幕。我最初将描述单元格的高度设置为视图的高度 - 50以考虑选择器单元格但我看到剩下的一些空间显示了集合视图的颜色。然后我决定让descriptionview成为整个view.frame的高度,但由于某种原因仍然有空的空间。这不是一个很大的空间,通过使collectionview与我的描述相同颜色,一切都会好看,但为什么会发生这种情况呢?

viewcontroller中的代码:

import UIKit

class PokeDexController: UICollectionViewController,      UICollectionViewDelegateFlowLayout {

private let cellID = "cellID"
private let cellID2 = "cellID2"


override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "PokeDex 386"
    //collectionView?.backgroundColor = UIColor(red: 52/255.0, green: 55/255.0, blue: 64/255.0, alpha: 1.0)
    collectionView?.backgroundColor = UIColor.white

    collectionView?.register(chooserCell.self, forCellWithReuseIdentifier: cellID)
    collectionView?.register(DescriptionCell.self, forCellWithReuseIdentifier: cellID2)

}

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    if (indexPath.row == 0)
    {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellID, for: indexPath) as! chooserCell
        return cell
    }
    else
    {
        let cell2 = collectionView.dequeueReusableCell(withReuseIdentifier: cellID2, for: indexPath) as! DescriptionCell
        return cell2
    }
}

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 2
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    if(indexPath.row == 0)
    {
        return CGSize(width: view.frame.width, height: 50)

    }
    else
    {
        return CGSize(width: view.frame.width, height: view.frame.height)
    }
}

}

how the app currently looks, empty space between two cells

由于

1 个答案:

答案 0 :(得分:2)

我会仔细检查view.frame以确保它符合您的预期,只是为了排除一些简单的事情。更多次,我想承认我已经使用了对另一个视图的引用谁的框架不是我想的那样。

要检查的另一件事是UICollectionView的内容插入/间距,特别是如果你使用的是故事板,我不知道故事板是否设置了默认的插入/单元格间距。如果始终似乎在单元格边缘周围有一些间距,则最有可能在UICollectionView本身上配置一些填充/间距。

另一个可能的罪魁祸首可能是AutoLayout约束,默认情况下,故事板附加到布局边距而不是布局边缘。边缘略微偏离真实边缘而产生间隙。

希望这可以帮助一些人或者至少让你找到合适的地方