ios11 中uicollectionview reloaddata 为啥页面会滑动一下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios11 中uicollectionview reloaddata 为啥页面会滑动一下相关的知识,希望对你有一定的参考价值。

参考技术A 点开 UICollectionViewDelegate,发现有 @protocol UICollectionViewDelegate <UIScrollViewDelegate>。
所以只要实现UIScrollViewDelegate的
- ( void)scrollViewDidScroll:( UIScrollView *)scrollView; 方法,就可以重写UICollectionView滑动操作
例如,在UICollection上方有一个名为testImg的ImageView,要跟着UICollection的滑动一起动,那么可以使用下面方法
1 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
2
3 CGPoint point=scrollView.contentOffset;
4 NSLog(@"%f,%f",point.x,point.y);
5
6 CGRect frame = [_testImg frame];
7 frame.origin.y = 43-point.y;
8 _testImg.frame = frame;
9
10 frame = [scrollView frame];
11 frame.origin.y = 179-point.y;
12 scrollView.frame = frame;
13

需要注意的是,第7行的43和第11行的179分别为testImg和UICollectionView初始的y轴值,不是滑动之前的值。如果使用
控件.origin.y -= point.y;
y值就会快速变小,控件瞬间飞出屏幕
上述代码中,point是滑动之后的偏移量,手指上滑,偏移y为正本回答被提问者采纳

无法在 iOS8 中显示 UICollectionView 菜单

【中文标题】无法在 iOS8 中显示 UICollectionView 菜单【英文标题】:Unable to show UICollectionView menu in iOS8 【发布时间】:2014-09-08 18:58:31 【问题描述】:

我正在尝试让 UIMenu 出现在集合视图中。

我已经设置了我的菜单

UIMenuItem* deleteItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"DELETE", @"Supprimer") action:@selector(deleteShow:)];
UIMenuItem* archiveItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"ARCHIVE", @"Archiver") action:@selector(archiveShow:)];
UIMenuItem* unarchiveItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"UNARCHIVE", @"Restaurer") action:@selector(unArchiveShow:)];

[[UIMenuController sharedMenuController] setMenuItems:@[deleteItem,archiveItem,unarchiveItem]];

我已经在我的 Collection View Delegate 中实现了以下方法:

- (BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath
- (BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender
- (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender

前两个总是返回 YES。 但是长按没有菜单显示。甚至没有标准的剪切/复制/粘贴菜单。 有没有人经历过这样的事情?

提前致谢

【问题讨论】:

【参考方案1】:

花了一些时间解决这个问题。发现如果在UICollectionViewCell的子类中不实现“deleteShow:”等方法,菜单项就不会显示出来。

【讨论】:

以上是关于ios11 中uicollectionview reloaddata 为啥页面会滑动一下的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11 下 UICollectionView 的HeaderView 遮挡滚动条

ios11 中uicollectionview reloaddata 为啥页面会滑动一下

UICollectionView 在 iOS 11 上覆盖全屏

iOS 11 UICollectionView顶部出现白色间隔的问题

Swift 3 - iOS 11.2 上的 UICollectionview 问题

Swift 3 - iOS 11.2上的UICollectionview问题