gpt4 book ai didi

ios - UICollectionView Cell Spacing 基于设备屏幕尺寸

转载 作者:IT王子 更新时间:2023-10-29 08:02:29 26 4
gpt4 key购买 nike

我实现了一个 UICollectionView,单元格大小是 w90 h90。当我在 iPhone 6 上运行它时,我得到了正确的单元格间距,但是当我在 iPhone 5s 上运行时,我得到了更多的单元格间距。 我的问题是如何根据设备屏幕大小更改单元格大小,假设如果单元格大小为 w80 h80,我在 iPhone 5s 上也能得到正确的结果。我现在正在做的是

 override func viewWillAppear(animated: Bool) {

var scale = UIScreen.mainScreen().scale as CGFloat
println("Scale :\(scale)")

var cellSize = (self.collectionViewLayout as UICollectionViewFlowLayout).itemSize
println("Cell size :\(cellSize)")

imageSize = CGSizeMake(cellSize.width * scale , cellSize.height * scale)
println("Image size : \(imageSize)")

}

//sizeForItemAtIndexPath

  func collectionView(collectionView: UICollectionView,layout collectionViewLayout: UICollectionViewLayout,sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{

return imageSize!

}

iPhone 6 上的结果: enter image description here

iPhone 5s 上的结果 enter image description here

Objective-C/Swift 都可以很好地解决问题。谢谢。

最佳答案

第 1 步:实现 UICollectionViewDelegateFlowLayout(如果未完成)。

第 2 步:使用 UICollectionViewDelegateFlowLayout 的委托(delegate)方法。

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
return CGSizeMake((UIScreen.mainScreen().bounds.width-15)/4,120); //use height whatever you wants.
}

第 3 步:转到您拥有 CollectionView 的 XIB 或 StoryBoard

第 4 步:在您拥有 CollectionView 的 XIB 或 StoryBoard 中,点击 CollectionView。

第 5 步:转到 InterfaceBuilder,然后在倒数第二个选项卡(即:Size Inspector)中设置 Min Spacing

对于单元格 = 5

对于行 = 5

那个。

Note:

  • This solution is for if you wants to make spacing between cell = 5.
  • If your spacing is different then 5, then you need to change value 15 in delegate method.
  • Ex: Spacing between cell = 10, then change delegate 15 to 10x3 = 30

return CGSizeMake((UIScreen.mainScreen().bounds.width-30)/4,120);

  • 并设置最小间距

For Cells = 10

For Lines = 10

反之亦然。

Swift 3 版本

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let width = UIScreen.main.bounds.width
return CGSize(width: (width - 10)/3, height: (width - 10)/3) // width & height are the same to make a square cell
}

关于ios - UICollectionView Cell Spacing 基于设备屏幕尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28872001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com