我正在创建一系列帮助页面,这些页面会在用户首次启动应用程序时显示。为此,我有一个以编程方式设置的 UIViewController,它初始化一个(以编程方式设置的)UICollectionView View Controller 边界的大小。每个单元格都包含一个全屏大小的图像。
如果在已有 View Controller 的情况下推送此 View Controller ,它会正常显示。但是,当此 View Controller 用作应用程序导航 Controller 的初始 Root View Controller 时, Collection View 具有正确的大小和对齐方式,但单元格从屏幕顶部向下移动了大约 10 个像素,因此 Collection View 查看背景显示。
(注意红色是collection view的背景色)
如果我在 viewDidLoad、viewDidLayoutSubviews 或 viewWillAppear 中设置 Collection View ,我会遇到同样的问题。如果我在 viewDidAppear 中设置 Collection View ,我不会遇到这个问题,但这不起作用,因为用户将在 Collection View 加载之前看到黑屏。
这是显示 View Controller 的代码,在 application:didFinishLaunchingWithOptions:launchOptions:
UIViewController* viewControllerToPush = [[OnboardingViewController alloc] initWithNibName:nil bundle:nil];
_nav = [[UINavigationController alloc] initWithRootViewController:viewControllerToPush];
[_nav setNavigationBarHidden:YES];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:_nav];
[self.window makeKeyAndVisible];
下面是设置 Collection View 和布局的代码:
UICollectionViewFlowLayout* layout = [[UICollectionViewFlowLayout alloc] init];
layout.minimumInteritemSpacing = 0;
layout.minimumLineSpacing = 0;
layout.itemSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height);
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
CGRect collectionViewFrame = self.view.bounds;
_collectionView = [[UICollectionView alloc] initWithFrame:collectionViewFrame collectionViewLayout:layout];
_collectionView.delegate = self;
_collectionView.dataSource = self;
_collectionView.pagingEnabled = YES;
_collectionView.showsHorizontalScrollIndicator = NO;
[_collectionView registerClass:[OnboardingCollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];
[self.view addSubview:_collectionView];
最佳答案
我通过在初始化函数中将 View Controller 的 automaticallyAdjustsScrollViewInsets 设置为 NO 来解决这个问题。感谢https://stackoverflow.com/a/25352483/1370967寻求灵感。
关于ios - 全屏水平滚动 UICollectionView 单元格在第一个显示的 UIViewController 中使用时向下移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930482/