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顶部出现白色间隔的问题