首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅用于电话的UICollectionView Centers on Landscape

仅用于电话的UICollectionView Centers on Landscape
EN

Stack Overflow用户
提问于 2015-12-06 03:01:09
回答 1查看 669关注 0票数 1

我有一个UICollectionView,它每个部分使用一个单元格。它会垂直滚动。我已经设置了集合视图单元格的大小320X125,尽管我使用了宽度,但没有用。

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

我希望单元格停留在屏幕的左侧,而不考虑方向。如何才能做到这一点?虽然自动布局适用于单元格内部的内容,但似乎没有可应用于单元格本身的自动布局。

EN

回答 1

Stack Overflow用户

发布于 2015-12-07 13:41:55

我通过为iPad创建第二个单元格解决了这个问题。因此,有一个用于iPhone,另一个用于iPad。然后我使用:

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

基于设备方向,我设置了我随后使用的preferredMaxLayoutWidth

代码语言:javascript
复制
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)
        }
    }

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

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

代码语言:javascript
复制
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
    {
        coordinator.animateAlongsideTransition(nil) { (context) -> Void in
            self.collectionsView.reloadData()
        }
    }  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34109605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档