- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
UICollectionView Programming Guide说:
In addition to animating insertions, deletions, and move operations, you can invalidate the layout at any time and force it to redraw its contents. Invalidating the layout does not animate items directly; when you invalidate the layout, the collection view displays the items in their newly calculated positions without animating. However, the act of invalidating the layout causes the layout object to move items explicitly. In a custom layout, you might use this behavior to position cells at regular intervals and create an animated effect.
我一直在尝试这样的事情,其中 AnimationStep
是我的 UICollectionViewFlowLayout
子类使用的枚举,用于有条件地设置具有三阶段动画的图 block 位置:
-(void)update{
[self animateLayoutAfterDelay:2.0 toStep:AnimationStepOne];
[self animateLayoutAfterDelay:4.0 toStep:AnimationStepTwo];
[self animateLayoutAfterDelay:6.0 toStep:AnimationStepThree];
}
-(void)animateLayoutAfterDelay:(NSTimeInterval)delay toStep:(MagazineLayoutAnimationStep)step {
double delayInSeconds = delay;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[UIView animateWithDuration:2.0 animations:^{
self.layout.animationStep = step;
[self.layout invalidateLayout];
}];
});
}
这具有相当不可预知的效果。有些单元格以我期望的方式进行动画处理,有些单元格会隐藏和显示,或者只是出现在它们的新位置。我在单元格上放置了随机背景颜色,看看这是否可能是 UICollectionView 回收单元格的效果,果然,有时是这样。这解释了一些奇怪的地方,但不是全部。
有人知道 Apple 希望我如何为单元格设置动画并移动它们吗?
(我需要这个,因为我的 Collection View 单元格往往会改变大小,我想要一个没有任何对角线移动的优美动画)。
最佳答案
答案是使用中间布局。
[self.collectionView setCollectionViewLayout: layoutForStepOne animated:YES completion:^(BOOL finished) {
[self.collectionView setCollectionViewLayout: layoutForStepTwo animated:YES completion:^(BOOL finished) {
[self.collectionView setCollectionViewLayout: layoutForStepThree animated:YES];
}];
}];
关于ios - 使用 invalidateLayout 调用的高级 UICollectionView 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15566735/
我在 TableView 中有一个动态 collectionView,当我添加 invalidateLayout 时出现错误(图片如下)但是如果我删除 invalidateLayout 前四个单元格被
我对 UICollectionViewLayout 进行了子类化以创建日历。我想让用户能够更改一些设置,例如屏幕上显示的天数(默认为 7)。 我将daysToShow保存在UserDefaults中。
我发现在 iOS8 中调用 invalidateLayout 会导致崩溃行为,这可能是由于上次 WWDC 引入了带有上下文的新 invalidateLayout。不过,我还没有找到等效于使整个 Col
我有一个 UICollectionViewController,它有一堆单元格,每个单元格都有屏幕尺寸。 如果我以纵向或横向启动应用程序,一切都会按预期进行。 问题是当我更改屏幕方向并调用 colle
这个问题已被问过几次,但没有一个答案足够详细,让我无法理解为什么/如何工作。作为引用,其他 SO 问题是: How to update size of cells in UICollectionVie
我有一个带有数据源和布局类的 Collection View 。该类链接到 Attributes Inspector 中的 Collection View 。 通过点击按钮,我需要检索集合的数据,这可
在 UICollectionView + UIKit Dynamics 上阅读 objc.io 的第 5 期时,第 2 部分讨论了“Tiling your Dynamic Behaviors for
UICollectionView Programming Guide说: In addition to animating insertions, deletions, and move operat
我想每分钟更新一次 UICollectionView 布局。它在 iOS 10 中运行良好,但在 iOS 9 中崩溃(我在 iPad 2 中测试过) invalidateLayout 方法使 UICo
我正在尝试刷新页脚 (supplementaryElement)。我正在使用 invalidatelayout 方法。基于 SO 建议 here . Apple 文档 here . 我收到以下错误:
问题是 collectionView 中的列数在旋转时不会保持在 7(所需数量)。需要更改什么代码才能解决此问题? 自定义 UICollectionViewFlowLayout 中的 invalida
我一直在阅读this article about using custom UICollectionViewLayouts并试图将这个想法融入我正在从事的项目中。 我们之前使用的是 UICollect
在 UITableViewController、UITableViewCell 中,我有一个网格,每行具有固定数量的静态 UICollectionViewCells(无间距)。 extension N
我是一名优秀的程序员,十分优秀!