- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
所以我有一个具有以下代码的 CollectionView:
class MyViewController: UIViewController {
...
@IBOutlet weak var imageCollectionView: UICollectionView!
fileprivate let sectionInsets = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)
fileprivate let itemsPerRow: CGFloat = 3
...
override func viewDidLoad() {
super.viewDidLoad()
imageCollectionView.delegate = self
imageCollectionView.dataSource = self
}
}
...
extension MyViewController : UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
let paddingSpace = sectionInsets.left * (itemsPerRow + 1)
let availableWidth = collectionView.bounds.width - paddingSpace
let widthPerItem = availableWidth / itemsPerRow
return CGSize(width: widthPerItem, height: widthPerItem)
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
insetForSectionAt section: Int) -> UIEdgeInsets {
return sectionInsets
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return sectionInsets.left
}
}
我想要的是每行 3 个单元格,它们之间的空间非常小,但每当我运行该应用程序时,我都会得到如下信息:
其中每个黑色 block 是一个单元格。
对于我发现的类似问题,答案通常是实现我已经完成的 UICollectionViewDelegateFlowLayout 函数,我的函数正在被调用,但没有按预期工作!即使我手动将 widthPerItem
值稍微变小,它仍然不起作用!
谁能看出我是否遗漏了一些明显的东西?谢谢!
最佳答案
您确定最小项目间距设置为仅 1 磅吗?您可以在 Interface Builder 中或通过覆盖以下委托(delegate)方法进行设置:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 1.0;
}
我看到的另一个可能的原因是 availableWidth
除以 itemsPerRow
的结果是一个 float 。最后,单元格宽度和插图的总和可能实际上超过 Collection View 宽度 0.x
像素。为确保不会发生这种情况,您可能需要使用 floor
:
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
let paddingSpace = sectionInsets.left * (itemsPerRow + 1)
let availableWidth = collectionView.bounds.width - paddingSpace
let widthPerItem = floor(availableWidth / itemsPerRow)
return CGSize(width: widthPerItem, height: widthPerItem)
}
关于ios - UICollectionView 不遵守 UICollectionViewDelegateFlowLayout 和插图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47784015/
我在为 UICollectionViewCell 设置阴影路径时遇到问题,该路径具有与 collectionView 边界的相对宽度。 我使用 Storyboard约束,在 AwakeFromNib
我创建了一个简单的 Collection View 并添加了虚拟数据(参见下面的代码) 一切正常,直到我添加了 CollectionViewDelegateFlowLayout,它使我的部分标题消失了
纯代码(我没有使用 Storyboard ,只是使用代码)构建集合但不执行 UICollectionViewDelegateFlowLayout。 class Calendarview : UIVie
我在我的 ViewController 中实现了 UICollectionViewDelegateFlowLayout,并使用以下代码指定 insets: func collectionView(_
UIViewController 维护对 UICollectionView 的引用。 Controller 应使用 UICollectionViewDelegateFlowLayout 修改内置流布局
我在 UIView 中有一个 Collection View 。我想在设备旋转时自动调整单元格大小(即,纵向模式下有 4 列,横向模式下有 5 列)。第一次(最初启动应用程序时)工作正常,但是当我将设
看到以下异常 'UICollectionView must be initialized with a non-nil layout parameter' 使用这个 ViewController im
我正在尝试做一个 UICollectionViewDelegateFlowLayout,在屏幕宽度的三分之一处将 3 个项目排成一行。由于某种原因,它增加了间距并且不符合方形布局。 以下是 UICol
我正在使用 UICollectionViewDelegateFlowLayout 来设置 collectionViewCell 的大小和高度,但是当我使用这个时,cell 中的约束没有更新。 func
我知道 UICollectionViewDelegateFlowLayout 是一个协议(protocol),而 UICollectionViewFlowLayout 是一个类,我知道协议(proto
在我的 Collection View 布局(UICollectionViewFlowLayout 的子类)中,我定义了: - (BOOL)shouldInvalidateLayoutForBound
我有一个 UICollectionView,它位于 UITableViewCell 之上。单元格是 Collection View 的委托(delegate)和数据源。一切都在 Storyboard中
我正在尝试布局我的 collectionViewCell 的大小,以便每行中有 7 个单元格(很简单吧?)。 cell很简单,只有一个UILabel,上、左、下、右约束均为0。 我已经设置了 size
我正在尝试实现 UICollectionViewDelegateFlowlayout 的 sizeForItemAtIndexPath,类似于本教程:http://www.raywenderlich.
所以我有一个具有以下代码的 CollectionView: class MyViewController: UIViewController { ... @IBOutlet weak
我创建了一个 UICollectionViewDelegateFlowLayout 的实例,如下所示: type CollectionViewFlowDelegate (handle:IntPtr)
在 UITableViewController 中,使用静态 UITableViewCells,我尝试创建一个可重用的网格,其中每行有一定数量的单元格,宽度和高度可变。 在 Identifying a
有没有办法替换方法 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICol
所以正如标题所暗示的那样,我似乎遇到了一个奇怪的问题。我在这里要做的就是创建一个 2 列的 Collection View ,而无需将任何内容硬编码到我的委托(delegate)方法中。调试后我发现
如果我使用 UICollectionViewDelegateFlowLayout, cellForItemAt indexPath 不会调用。 在这种情况下: class Something: UIV
我是一名优秀的程序员,十分优秀!