在所有屏幕尺寸的 CollectionView 中正确显示 Instagram 照片

Display Instagram photos correctly in a CollectionView on all screen sizes

这个让我很困惑。好的,我们开始吧。 我正在拉下 IG 图片,它们有 3 种尺寸: 150x150、306x306、640x640

我想做的是在所有 iPhone 屏幕尺寸(5、5S、6、6+)上显示它们 3 个。 306x306 的尺寸缩小速度非常快,而且看起来很棒。这就是我的起点(150x150 有点模糊,640x640 也是一个选项,我也可以使用它们,只是想节省一些带宽)。

边缘可以与两侧齐平,它们之间有 1 px/pt 线。我为此绞尽脑汁。我的理解是函数(下面)应该覆盖我的情节提要中的任何其他设置,以及我应该关注的地方(我已经打印出我从 println() 捕获的尺寸。

我的挑战是找出在所有屏幕上工作所需的最终宽度和高度。我已经尝试了很多排列,但还没有确定。我很接近,但没有雪茄。这都是在故事板中使用 CollectionView。建议表示赞赏。这是个大问题,整天都在这个问题上度过。

我认为自动版式根本没有帮助,这一切都必须在代码中完成,但谁知道呢?

谢谢[很多!]:-)

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

    var width = CGRectGetWidth(collectionView.bounds)

    println("width: \(width)")

    // iphone5 320
    // iphone5S 320
    // iphone6 375
    // iphone 6+ 414

    return CGSize(width: NeedCorrectWidthHere, height: NeedCorrectHeightHere)

}

这确实部分有效,图像之间有间隙:

var screenWidth = CGRectGetWidth(collectionView.bounds)
var cellWidth = screenWidth/3

return CGSize(width: cellWidth-10, height: cellWidth-10)

这似乎有效。最后一个非常简单的解决方案。

   func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

    var screenWidth = CGRectGetWidth(collectionView.bounds)
    var cellWidth = screenWidth/3

    return CGSize(width: cellWidth-2, height: cellWidth-2)

}

    func collectionView(collectionView: UICollectionView,
        layout collectionViewLayout: UICollectionViewLayout,
        minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
            return 3
    }

    func collectionView(collectionView: UICollectionView,
        layout collectionViewLayout: UICollectionViewLayout,
        minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
            return 3
    }