UICollectionView仅用于手机的横向居中单元格



我有一个UICollectionView,它每节使用一个单元格。它垂直滚动。我已经使集合视图单元格大小为320X125,尽管我玩了宽度游戏,但没有效果。

当iPhone处于纵向模式时,单元格从屏幕左侧开始,这是所需的行为。但是,当我将手机旋转到横向时,手机会在收藏视图中居中。然而,在iPad上,它在两个方向上都保持在左边。

无论方向如何,我都希望单元格保持在屏幕左侧。如何才能做到这一点?虽然自动布局适用于单元格内的内容,但似乎没有可以应用于单元格本身的自动布局。

我为iPad创建了第二个单元格,从而解决了这个问题。所以有一个是iPhone,另一个是iPad。然后我使用:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell

根据设备方向,我设置preferredMaxLayoutWidth,然后使用:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
    {
        let deviceType = UIDevice.currentDevice().userInterfaceIdiom
        if deviceType == .Phone
        {
            return CGSizeMake(self.view.bounds.width, 170)
        }
        else
        {
            return CGSizeMake(self.view.bounds.width, 400)
        }
    }

这会根据手机或平板电脑调整单元格的大小。

作为最后一项,我使用以下内容在设备旋转后重新绘制:

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
    {
        coordinator.animateAlongsideTransition(nil) { (context) -> Void in
            self.collectionsView.reloadData()
        }
    }  

最新更新