- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
问题:
当我的 UICollectionView
的框架发生变化时如何通知我,以便我可以在发生这种情况时运行一些代码?但是,我想知道这是否是解决问题的最佳方法。
问题:
我创建了自己的 UICollectionViewLayout
,它需要在布置单元格之前知道 Collection View 的框架大小。问题是,当我将 Collection View 的 collectionViewLayout
属性设置为我在 viewDidLoad
中的自定义布局时, Collection View (还)没有出现在屏幕上。因此,当布局代码运行时,它为 collectionView.frame.size
获取的值是 Interface Builder 中定义的宽度和高度,当 Collection View 由于自动布局约束出现在屏幕上时,它会发生变化。这会导致自定义布局在函数 collectionViewContentSize
中返回不正确的大小。
目前的解决方案:
为解决该问题,我在 viewDidAppear
之前不更改 collectionViewLayout
。这确实会导致获得正确的尺寸。但是,直到使用默认 Flow 布局显示 Collection View 后才会执行此操作,因此所有单元格都以不同的布局呈现,然后我更改布局并重新呈现单元格。虽然这几乎不会引起注意,因为它发生得太快了,但这显然不是一个好的解决方案。
更好的问题:
是否可以在 UICollectionView
框架的大小更改时收到通知?如果是这样,也许我可以在发生这种情况时设置布局,这种情况应该发生得足够快,以防止显示具有默认 Flow 布局的单元格。
如果这不可能,一个看似糟糕但稍微好一点的解决方案可能是在 viewDidAppear
中设置新布局之前不显示任何单元格。这会阻止 Flow 布局呈现,但会在短时间内显示空白 UI。
另一种选择是将 CGSize
传递给布局类,而不是仅仅访问 collectionView.frame.size
,这样做我仍然可以设置在 viewDidLoad
中自定义布局并防止在 Flow 布局中显示单元格。这将需要某种方式来了解 Collection View 的大小,然后再将其呈现在屏幕上,这可能是不可能的(或者至少是不准确的)。
解决此问题的最佳方法是什么?
请注意,我不需要担心 future Collection View 大小的变化,因为布局将在边界变化时失效并重新呈现。
最佳答案
您可以尝试使用 viewDidLayoutSubviews
而不是因为它在 viewDidAppear:
之前被调用,所以您有机会在那个时候获得正确的帧值。
文档注释:
However, this method being called does not indicate that the individual layouts of the view’s subviews have been adjusted.
关于ios - 如何通知 UICollectionView 框架更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24854498/
我有一个并排有两列的布局。有没有一种简单的方法可以使用单个 UICollectionView 来做到这一点?唯一的要求是该解决方案必须适用于 iOS 8,并且单元格必须在每列中垂直堆叠,如下所示:
我使用标准 UICollectionView与部分。我的单元格像网格一样排列。如果用户使用 Apple TV Remote 移动焦点,则所选方向的下一个单元格会正确聚焦。但是如果网格中有“间隙”,默认
这是我的 ImageController 类(一个 ViewController)仅显示 Collection View 的背景,而其中的单元格则不显示。有什么帮助吗?是不是我没有正确初始化什么? 这
我希望能够在 UICollectionView 中设置内容大小的最小高度,这样我就可以隐藏/显示 UISearchbar,类似于在 iBooks 上完成的方式。 但是,我不想对布局进行子类化,因为我想
有没有办法禁用 UICollectionView 的自动滚动细胞何时聚焦?当单元格进入焦点时,我想手动调整单元格的内容偏移量。 我不想更新内容偏移量: - (void)didUpdateFocusIn
如何将 UICollectionView 中的所有单元格垂直和水平居中使用 UICollectionViewFlowLayout ? 流布局根据滚动方向在右侧或底部留下间距。我想在所有方面设置相同的填
所以这是一个很无聊的问题,但我只是想不出一种非常简单的方法来检测当前关注的项目的 indexPath . 我环顾四周,希望看到一些非常简单的东西,例如 collectionView.indexPath
每当 UICollectionView 完全加载时,我都必须执行一些操作,即此时应调用所有 UICollectionView 的数据源/布局方法。我怎么知道?是否有任何委托(delegate)方法可以
每当 UICollectionView 完全加载时,我都必须执行一些操作,即此时应调用所有 UICollectionView 的数据源/布局方法。我怎么知道?是否有任何委托(delegate)方法可以
所以,UICollectionView 现在对我来说真的很痛苦。假设我有一个 UIViewController ,其中嵌入了一个 UICollectionView 。 CollectionView 的
好的,如果我有 UIViewController如果我使用这个 `preferredFocusedView ,我可以制作一个专注于 tvOS 的 View ,但是如何让 UICollectionVie
我已经构建了 2 个 Collection View ,1 个水平滚动(在顶部)和 1 个垂直滚动(在中间 - 底部),用于在我的 Objective-C iOS 应用程序中查看 2 组不同的内容,类
这就是我的问题,您在 gif 上看到的 4 个橙色矩形是单个垂直 UICollectionView = OrangeCollectionView。 绿色和紫色“卡片” View 是另一个 UIColl
大家好,我是 IOS 开发的新手,我有一个 UICollection,我在其中使用 SDWebImageCache 加载图像。问题是我的 UICollectionview 单元格在快速滚动时感觉像抽搐
我在 ViewController 中有两个 Collection View 。需要在用户滚动底部 UICollectionView 时自动滚动顶部 collectionView。 最佳答案 你可以试
我正在研究 UICollectionView,我有一个在单元格中使用 collectionView 的想法?可以吗 当我运行项目时,我收到一个错误 "InterFace Builder StoryBo
大家好,我收到以下错误 -UICollectionView 必须使用非 nil 布局参数进行初始化 PopularShotsCollectionViewController 的代码: import U
我的应用程序出现此错误: *** -[UICollectionView _endItemAnimations] 断言失败,/SourceCache/UIKit/UIKit-2372/UICollect
当我的 UIViewController 与 UICollectionView 一起出现时,内容会向上滚动一点,出现时。 我实现了 scrollViewDidScroll:我正在记录 contentO
我遇到了一个问题,在我的 UICollectionView 中,当返回的记录为 0 时,我需要显示一个页脚。下面的代码似乎运行良好,当没有记录时,显示页脚。但是,有一个问题,当有记录时,虽然foote
我是一名优秀的程序员,十分优秀!