UICollectionViewCell 大小根据屏幕/FrameSize Swift
UICollectionViewCell Size According to Screen/ FrameSize Swift
我有一个集合视图,每个 collectionViewCell 中都有一个图像。对于任何给定的框架/屏幕尺寸,我只想拥有 3 个单元格。我该如何实施。我写了一些基于
的代码
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let numberOfCell = 3
let cellWidth: CGFloat = [[UIScreen mainScreen].bounds].size.width/numberOfCell
return CGSizeMake(cellWidth, cellWidth)
}
但是它不工作并且报错。执行此操作的最佳方法是什么。
这是您的 swift 代码:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let numberOfCell: CGFloat = 3 //you need to give a type as CGFloat
let cellWidth = UIScreen.mainScreen().bounds.size.width / numberOfCell
return CGSizeMake(cellWidth, cellWidth)
}
这里 numberOfCell
的类型必须是 CGFloat
因为 UIScreen.mainScreen().bounds.size.width
return 是 CGFloat
值所以如果你想用 numberOfCell
然后输入 numberOfCell
必须是 CGFloat
因为你不能用 Int
除 CGFloat
。
这里是 Swift 3 个代码,你要实现 UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let numberOfCell: CGFloat = 3 //you need to give a type as CGFloat
let cellWidth = UIScreen.main.bounds.size.width / numberOfCell
return CGSize(width: cellWidth, height: cellWidth)
}
Swift3 的答案,Xcode 8 水平间距固定:
所有较早答案的问题是,给定单元格大小 CGSizeMake(cellWidth, cellWidth) 实际上占据了所有屏幕,没有留出边距线的空间,因为 collectionView 试图通过取一个来调整 row/column 间距每行中的元素更少,并且不需要额外的间距。
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let linespacing = 5 //spacing you want horizantally and vertically
let numberOfCell: CGFloat = 3 //you need to give a type as CGFloat
let cellWidth = UIScreen.mainScreen().bounds.size.width / numberOfCell
return CGSizeMake(cellWidth - linespacing, cellWidth - linespacing)
}
试试这个,
根据屏幕大小和方向指定 collectionView 单元格项的大小。
你可以看看this
希望对您有所帮助。
我有一个集合视图,每个 collectionViewCell 中都有一个图像。对于任何给定的框架/屏幕尺寸,我只想拥有 3 个单元格。我该如何实施。我写了一些基于
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let numberOfCell = 3
let cellWidth: CGFloat = [[UIScreen mainScreen].bounds].size.width/numberOfCell
return CGSizeMake(cellWidth, cellWidth)
}
但是它不工作并且报错。执行此操作的最佳方法是什么。
这是您的 swift 代码:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let numberOfCell: CGFloat = 3 //you need to give a type as CGFloat
let cellWidth = UIScreen.mainScreen().bounds.size.width / numberOfCell
return CGSizeMake(cellWidth, cellWidth)
}
这里 numberOfCell
的类型必须是 CGFloat
因为 UIScreen.mainScreen().bounds.size.width
return 是 CGFloat
值所以如果你想用 numberOfCell
然后输入 numberOfCell
必须是 CGFloat
因为你不能用 Int
除 CGFloat
。
这里是 Swift 3 个代码,你要实现 UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let numberOfCell: CGFloat = 3 //you need to give a type as CGFloat
let cellWidth = UIScreen.main.bounds.size.width / numberOfCell
return CGSize(width: cellWidth, height: cellWidth)
}
Swift3 的答案,Xcode 8 水平间距固定:
所有较早答案的问题是,给定单元格大小 CGSizeMake(cellWidth, cellWidth) 实际上占据了所有屏幕,没有留出边距线的空间,因为 collectionView 试图通过取一个来调整 row/column 间距每行中的元素更少,并且不需要额外的间距。
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let linespacing = 5 //spacing you want horizantally and vertically
let numberOfCell: CGFloat = 3 //you need to give a type as CGFloat
let cellWidth = UIScreen.mainScreen().bounds.size.width / numberOfCell
return CGSizeMake(cellWidth - linespacing, cellWidth - linespacing)
}
试试这个, 根据屏幕大小和方向指定 collectionView 单元格项的大小。 你可以看看this
希望对您有所帮助。