[英]SWIFT - Collection View Cell size
我有一个使用网络照片并将其放入收藏夹视图的应用程序。
在集合视图中,我有3行1:1大小的单元格,该行是根据屏幕宽度/ 3计算得出的。
每件事都运转良好,但总有一件事情是对的。 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 ,然后以编程方式拟合像元和间距,您可以尝试在自己的代码上添加minimumInteritemSpacingForSectionAtIndex和minimumLineSpacingForSectionAtIndex 。
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.