我想在所有 iphone 型号的 uicollectionview 中的一行中显示两个单元格
Posted
技术标签:
【中文标题】我想在所有 iphone 型号的 uicollectionview 中的一行中显示两个单元格【英文标题】:i want to show two cell in one row in uicollectionview in all iphone model 【发布时间】:2017-08-28 06:01:34 【问题描述】:here is some snap of it 我尝试使用此代码,但它不起作用:
我的收藏夹:
尺寸为:166:32 最小间距 : 10 : 10
部分插图:20 : 20
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt
indexPath: IndexPath) -> CGSize
if collectionView == MainCollectionView
let padding : CGFloat = 50
let collectionViewSize = MainCollectionView.frame.size.width - padding
return CGSize(width: collectionViewSize/2, height: collectionViewSize/2)
return CGSize(width: 0, height: 0)
【问题讨论】:
您可以在一个部分中使用两个单元格。 【参考方案1】:在您的视图中使用 UICollectionViewDelegateFlowLayout 并调用委托方法
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
let width = self.view.frame.width
return CGSize(width: (width)/2, height: (width)/2) // width & height are the same to make a square cell
【讨论】:
你自己设置收集委托了吗【参考方案2】:func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
let width = (collectionView.frame.width/2)-0.5
return CGSize(width:width , height: width)
【讨论】:
滚动的方向 滚动方向是垂直的【参考方案3】:尝试实现这些UICollectionViewDelegateFlowLayout
delegate methods
以达到预期的结果:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
return CGSize(width: (collectionView.bounds.width - 10 - 20*2)/2, height: collectionView.bounds.height)
//In collectionView.bounds.width - 10 - 20*2 :
//10 for cell spacing and
//20*2 for section insets on left and right
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat
return 10
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
return UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)
更清楚地指定您的要求,以便我可以进一步帮助您。
【讨论】:
什么不起作用?显示您获得的输出以及您想要实现的目标。 我想在 uicolectionview 中将两个单元格排成一行。 您使用的是水平还是垂直的集合视图? 如果可以,请添加屏幕截图以便更好地理解。【参考方案4】:您的代码很完美,但您使用的委托方法可能没有被调用。根据您使用的 swift 语法版本,尝试最新的委托方法。还要确保你的集合视图是该委托的观察者,方法是让它自己。
【讨论】:
我只有 5s 和 bellow it 电话有问题。根据我的说法,我正在使用更新的语法,如果您有任何建议,请帮助我。 问题是特定于设备还是特定于 ios 版本?以上是关于我想在所有 iphone 型号的 uicollectionview 中的一行中显示两个单元格的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 reactjs 在 webapps 上获取特定的移动设备型号?