我創建了一系列幫助頁面,當用戶第一次啓動應用程序時顯示。爲此,我以編程方式設置UIViewController,它初始化視圖控制器邊界的大小(以編程方式設置)UICollectionView。每個單元格包含一個全屏大小的圖像。全屏水平滾動UICollectionView單元格在第一個顯示的UIViewController中使用時向下移動
當已經有一個現有的視圖控制器時,這個視圖控制器被推動,它顯示正常。但是,當此視圖控制器用作應用程序導航控制器的初始根視圖控制器時,集合視圖具有正確的大小和對齊方式,但單元格從屏幕頂部向下移動約10個像素,以便集合視圖背景顯示通過。
(注意,紅色的是集合視圖背景色)
如果我設立在viewDidLoad中,viewDidLayoutSubviews,或viewWillAppear中收集的看法,我得到了同樣的問題。如果我在viewDidAppear中設置了集合視圖,則不會遇到此問題,但這不起作用,因爲用戶在集合視圖加載之前會看到黑屏。
下面是顯示視圖控制器,在應用程序代碼中: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];
這裏是設立集合視圖和佈局代碼:
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];
當我將itemSize設置爲集合視圖的邊界大小時,這幫助我解決了運行時異常與UICollectionView。自動調整調整滾動視圖後,再也沒有出現異常。謝謝! – Denis