- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果我旋转设备而 collectionview performBatchUpdate 和 reloadItemsAtIndexPaths , Collection View 将错位。但 View 仍将保持不变。
简单地解决这个问题:
setting [UIView setAnimationEnabled: NO]; in willRotateToInterfaceOrientation
+
setting [UIView setAnimationEnabled: YES]; in didRotateToInterfaceOrientation
但我认为这不是解决这个问题的好方法。
有没有人有更好的主意?
干杯。
这是我的代码:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
NSLog(@"Before Rotation");
NSLog(@"collecitonview Rect : %@", NSStringFromCGRect(self.collectionView.frame));
NSLog(@"view Rect : %@", NSStringFromCGRect(self.view.frame));
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
[super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
NSLog(@"After Rotation");
NSLog(@"collecitonview Rect : %@", NSStringFromCGRect(self.collectionView.frame));
NSLog(@"view Rect : %@", NSStringFromCGRect(self.view.frame));
}
- (void) viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
for(int i = 0 ; i < 30; i++){
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
CGFloat hue = arc4random() % 20;
[self.collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:hue inSection:0]]];
}];
[_operationsArray addObject:operation];
}
[self performUpdate];
}
- (void)performUpdate{
if(_operationsArray.count == 0)return;
[self.collectionView performBatchUpdates:^{
NSBlockOperation *operation = (NSBlockOperation*)[_operationsArray firstObject];
[operation start];
} completion:^(BOOL finished) {
if(_operationsArray.count != 0){
[_operationsArray removeObjectAtIndex:0];
[self performUpdate];
}
}];
}
输出:(如果我在执行更新期间旋转了设备)
2013-10-16 17:05:18.445 collectionviewbatchupdateTest[90419:a0b] Before Rotation
2013-10-16 17:05:18.446 collectionviewbatchupdateTest[90419:a0b] collecitonview Rect : {{0, 0}, {1024, 768}}
2013-10-16 17:05:18.446 collectionviewbatchupdateTest[90419:a0b] view Rect : {{0, 0}, {768, 1024}}
2013-10-16 17:05:18.851 collectionviewbatchupdateTest[90419:a0b] After Rotation
2013-10-16 17:05:18.851 collectionviewbatchupdateTest[90419:a0b] collecitonview Rect : {{-128, 0}, {1024, 1024}}
2013-10-16 17:05:18.852 collectionviewbatchupdateTest[90419:a0b] view Rect : {{0, 0}, {768, 1024}}
最佳答案
同样的问题。它看起来像是 UICollectionView 中的错误。我能找到的唯一其他解决方法是在旋转后重置 Collection View 的框架。
它似乎发生在旋转期间的任何批更新中,而不仅仅是 reloadItemsAtIndexPaths。
关于ios - UICollectionView performBatchUpdates 导致 collectionview 在旋转设备时错位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19396440/
我在 performBatchUpdates 期间面临崩溃的噩梦在 collection view 上. 问题基本上是这样的:我在服务器的目录中有很多图像。我想在 collection view 上显
我正在执行一些批量更新,不幸的是,当许多事件发生时,“插入”和“删除”项目的调用并不总是产生正确的结果。 因此,应用程序在 performBatchUpdates 中遇到异常。 因此,我尝试将 [co
我有一个 Collection View ,我修改它的项目大小,我通过调用它的 performBatchUpdates 方法来应用更改。 这会导致使用漂亮的动画进行更改,问题是,它还会禁用与我的 co
有一种方法可以自定义通过 performBatchUpdates 完成的动画计时吗? 我有这个代码 [self.stepCollectionView performBatchUpdates:^{
我在打电话 performBatchUpdates({ self.insertItemsAtIndexPaths(indexPathes) },
当我单独制作动画时,一切正常,但在 performBatchUpdates block 内部,更改是即时的,几乎就像我调用 reloadData() 一样。我是否正确使用它? 工作方式: NSAnim
我无法弄清楚这次崩溃的原因是什么? Incident Identifier: BF4459C1-B97D-448E-AAE0-4DA6A1E4731C CrashReporter Key: E72
我正在为我的 View Controller 使用快照测试。这是在测试中初始化 View Controller 的方式: window.addSubview(viewController.view)
我正在尝试使用 insertItemsAtIndexPaths 将新项目添加到我的 Collection View 中。我的应用程序在 performBatchupdate 时崩溃 - (void)
我有一个像这样更新的 UICollectionView: [self.collectionView performBatchUpdates:^{ [self.collectionView de
我们正在尝试设置具有自定义布局的 UICollectionView。每个 CollectionViewCell 的内容都是一张图片。总的来说,将有几千张图像,并且在某个特定时间大约有 140-150
我有一个 UITableView,它显示来自多个 RSS 提要的帖子的聚合提要。每当我的应用程序从提要中提取新帖子时,我都会创建一个对象来表示更新 UITableView 当前行所需的所有插入和删除操
我注意到 performBatchUpdates:completion: 的方式有一个奇怪的不同。 UICollectionView的方法适用于 iOS7(坏 - 崩溃)和 iOS8(好)。这是我使用
我目前遇到的有趣问题。在 UICollectionView 实例上调用 PerformBatchUpdates 方法时,某些情况会导致完成处理程序无法执行。 collectionView.perfor
我正在使用这个 gist用于 FRC 和 UICollectionView。这在 iOS 9 之前一直运行良好。 现在,在 iOS 10 中,有时我的应用程序会在 collectionview 的 p
如果我旋转设备而 collectionview performBatchUpdate 和 reloadItemsAtIndexPaths , Collection View 将错位。但 View 仍将
我从分成页面的 API 获取数据,我用户 var hasMoreUsers: Bool显示/隐藏页脚单元格 func collectionView(collectionView: UICollecti
我正在编写自定义 UICollectionViewFlowLayout 并且我注意到 initialLayoutAttributesForAppearingItemAtIndexPath: 和 ini
我刚刚调试完一个非常讨厌的 UIViewController 漏洞,这样即使在调用 dismissViewControllerAnimated 之后 UIViewController 也没有被释放。
好的,基本概述。我有一个 UICollectionView,我需要它支持通过 performBatchUpdates: 方法添加和删除项目。如果我使用标准的 UICollectionViewFlowL
我是一名优秀的程序员,十分优秀!