好吧準備好了這個熱度?
所以在我的主視圖控制器的viewDidLoad我鑑定意見加載到uicollectionview細胞中的數組:
NSArray *vcs = [@"view5", @"view1", @"view2", @"view3", @"view4", @"view5", @"view1"]
我還設置我們的PageControl算到:
self.pageControl.numberOfPages = vcs.count - 2; // for the fake first and last cells
我然後實例主視圖控制器的viewDidLoad中的viewcontrollers以及collectionview的alpha設置爲0.然後在我們的scrollViewDidEndDecelerating中處理Carousel(從最後一個單元格到第一個單元格和最後一個單元格)並更新pageControl以反射ct「真實」頁碼。
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
// Snaps into the cell
CGFloat pageWidth = scrollView.frame.size.width;
float fractionalPage = scrollView.contentOffset.x/pageWidth;
NSInteger page = lround(fractionalPage);
self.pageControl.currentPage = page - 1; // because our first cell is the last cell for animation purposes only
// Carousel from first to last and last to first while updating pagecontrol
if (page == 0) {
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:self.activeGaugeClusters.count - 2 inSection:0]
atScrollPosition:UICollectionViewScrollPositionLeft
animated:NO];
// Set our pagecontrol circles to the appropriate page indicator
self.pageControl.currentPage = self.activeGaugeClusters.count - 2;
} else if (page == self.activeGaugeClusters.count -1) {
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]
atScrollPosition:UICollectionViewScrollPositionLeft
animated:NO];
self.pageControl.currentPage = 0;
}
}
然後在執行的CollectionView我執行以下操作:
numberOfItemsInSection = vcs.count
和viewDidAppear用於裝載所述第一小區(無論是在indexPath.row == 1或2或3的細胞.. (1是第一個真正的頁面不爲0)
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:self.lastGaugePanel inSection:0]
atScrollPosition:UICollectionViewScrollPositionLeft
animated:NO];
self.pageControl.currentPage = self.lastGaugePanel - 1;
[UIView animateWithDuration:0.5 animations:^{
self.collectionView.alpha = 1.0;
}];
}
我認爲,關於總結起來,兩個主要的VC和的CollectionView的實現的其餘部分是標準的。所以,現在我有一個集合視圖加載其他視圖及其各自擁有自己的動畫或其他內容的VC。我將indexPath.row保存爲NSUserDefaults,以便我離開時所在的單元格是下一個加載的第一個單元格。
的希望這可以幫助別人,我知道它確實對我來說,不幸的是,使用第三方庫的很沮喪,所以我必須建立這個壞小子了(再次從@He幫助下,謝謝!)
我恐怕它比視圖中的圖像複雜一些,這些視圖是從故事板加載的(與使用nibs並加載它們相反),並且它們都有自己的視圖控制器,並且這些視圖可以被插入。此外,強烈建議使用uicollectionview,儘管不是絕對強制性的,以保持與其他應用程序的一致。你認爲我可以將單元格的數量設置爲非常高的數字,然後將內容和全部內容移至下一個單元格? (我認爲我在某個地方看到過,但是它必須有性能問題沒有?) – JakeTheBraek
即使它更復雜,原理也應該是相同的,當收集視圖處於靜止狀態時,您正在洗牌您的支持數據。我已經在表視圖中的表視圖的滾動視圖,表格視圖和層次結構上成功完成了這一任務,沒有任何問題。如果你不想混淆你的支持數據,你可以將它拖入一個臨時數據存儲中,並將其混淆?我也做過大量的單元格事情,但這只是爲了在我們實時滾動數據的同時保持幻覺。這永遠不會是無懈可擊的。 – foundry
感謝您的幫助他是,這裏的理論聽起來很合理,應該翻譯好我的collectionview。我將嘗試在最後一個單元格之後複製第一個單元格,反之亦然,然後鎖定單元格。一旦完成減速生病,根據方向將用戶移至「真實」第一個單元或「真實」最後一個單元。保持我的手指交叉。 – JakeTheBraek