collectionview刚刚在iPhone 4-5上填充了一个单元格

时间:2017-03-20 07:27:27

标签: ios swift xcode uicollectionview uicollectionviewcell

我的视图控制器中有一个集合视图。

enter image description here

但它在iPhone 6-7及以上版本中运行良好。 但这只显示iPhone 4和5中的一个单元格!

iPhone 5: enter image description here

iPhone 6: enter image description here

2 个答案:

答案 0 :(得分:1)

为每个屏幕设置CollectionViewCell大小动态。你可以试试这样的......

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
    return CGSizeMake(_myCollection.frame.size.width/2-13, _myCollection.frame.size.width/2-13);
}

答案 1 :(得分:1)

它适用于4.7英寸及以上的iPhone屏幕尺寸,因为它们的宽度足以显示两个单元格(默认宽度)。

您应该做的是确定要执行的单元大小:

来自collection​View(_:​layout:​size​For​Item​At:​)协议的

UICollection​View​Delegate​Flow​Layout方法。如下:

// don't forget to conform to UICollectionViewDelegateFlowLayout protocol:
class ViewController: UIViewController, UICollectionViewDelegateFlowLayout {
    //...

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let screenWidth = UIScreen.main.bounds.width

        // if you want to let the cell to be a square,
        // you should let the height equals to the width
        // or you can -of course- set the deired height
        return CGSize(width: screenWidth / 2, height: screenWidth / 2)
    }

    // ...
}

通过实现此功能,无论设备屏幕大小如何,单元格宽度都将是屏幕的一半。

备注:确保集合视图的最小空格为零:

enter image description here

同样,检查this Q&A可能对您的情况有用。

希望这会有所帮助。