繁体   English   中英

SWIFT-集合视图单元格大小

[英]SWIFT - Collection View Cell size

我有一个使用网络照片并将其放入收藏夹视图的应用程序。

在集合视图中,我有3行1:1大小的单元格,该行是根据屏幕宽度/ 3计算得出的。

每件事都运转良好,但总有一件事情是对的。 iphone 6s +的所有单元紧密结合在一起,完全没有间距。 但是在iPhone 5s上,我只能在屏幕截图之间以垂直方式在单元格之间留出一些间距。

iPhone 6s +屏幕截图

iPhone 5s截图

有一些代码:

let screenSize: CGRect = UIScreen.mainScreen().bounds

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
    return CGSize(width: screenSize.width / 3, height: screenSize.width / 3)
}

我还检查了是否是图像视图问题,但不是。

我该怎么做才能消除这些间距?

进行原始求和,将其舍入并乘以列数。

collectView的框架宽度调整为该值,然后单元格宽度将始终完美适合视图。

由于iPhone 5s的宽度为640,因此将其除以3将得出213,33333333。 由于iOS不喜欢这些值,因此它将值校正为213,当三个值彼此相邻时会创建间距,因为213 * 3不等于640。在iPhone 6s Plus上,宽度为1080,它可以被3整除,结果是360。在这里,不会出现间距。

尝试找到一个等于任何屏幕尺寸的自然数的分隔线,空格应该消失了,或者尝试寻找其他解决方案。

创建CollectionView ,然后以编程方式拟合像元和间距,您可以尝试在自己的代码上添加minimumInteritemSpacingForSectionAtIndexminimumLineSpacingForSectionAtIndex

func collectionViewLaunch() {

    // layout of collectionView
    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()

    // item size
    layout.itemSize = CGSizeMake(self.view.frame.width / 3, self.view.frame.size.width / 3)

    // direction of scrolling
    layout.scrollDirection = UICollectionViewScrollDirection.Vertical

    // define frame of collectionView
    let frame = CGRectMake(0, 0,
        self.view.frame.size.width, self.view.frame.size.height - self.tabBarController!.tabBar.frame.size.height - self.navigationController!.navigationBar.frame.size.height)

    // declare collectionView
    collectionView = UICollectionView(frame: frame, collectionViewLayout: layout)
    collectionView.delegate = self
    collectionView.dataSource = self
    collectionView.alwaysBounceVertical = true
    collectionView.backgroundColor = .whiteColor()
    self.view.addSubview(collectionView)

    self.collectionView.hidden = false

    // define cell for collection view
    collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")

    // call function to load posts
    loadPosts()

}

// cell line spacing
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
    return 0
}


// cell inter spacing
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout,
    minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
    return 0
}

// cell numb
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return picArray.count
}

希望对你有帮助。

我在水平和垂直集合视图中也遇到类似的问题。

我正在使用滑块设置列数,然后根据新的单元格大小调整集合中的UIImage的大小

最重要的是,我将箭头的图像切成两半,并分别将其一半放置在集合视图的侧面,这样当它显示时,结果是在图像之间绘制了一个完整的箭头...当时带有自定义分隔符的插入...这就是箭头“应该”所在的位置。

因此,根据屏幕尺寸和方向,我时不时地在箭头上有一个像素宽的间隙。

一切都在划分结果中。

您必须找到一个宽度/高度,该宽度/高度应尽可能地分开以适合最常用的屏幕。

如果总和中的值不是整数,则可以应用视图的某些条件大小调整,但要找到正确的值来替换它,则必须指定所有可能的情况。

最后,我放弃了“生存”在单像素范围内的差距

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM