इस हॉटनेस के लिए ठीक है?
तो मेरी मुख्य दृश्य नियंत्रक के 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
मैं तो दृष्टांत व्यू कंट्रोलर मुख्य दृश्य नियंत्रक के दृश्य में डिडलोड के साथ-साथ संग्रह के लिए अल्फा को 0 पर सेट करते हैं। फिर हमारे स्क्रॉल व्यूडिड एंड डिस्सेरेटिंग में मैं कैरोसेल को संभाला करता हूं (अंतिम सेल से पहले और पहले सेल को अंतिम तक जाता है) और पेज को अपडेट करने के लिए नियंत्रण सीटी "वास्तविक" पृष्ठ संख्या।
- (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;
}];
}
मुझे लगता है कि रकम के बारे में यह। दोनों मुख्य कुलपति और collectionview के लिए कार्यान्वयन के बाकी मानक हैं। इसलिए अब मैं एक संग्रह दृश्य है जो अन्य विचारों और उनके वीसी को लोड करता है जिनमें प्रत्येक का अपना एनीमेशन या जो भी हो। मैं indexPath.row को NSUserDefaults पर सहेजता हूं ताकि जब मैं छोड़ूं तो सेल अगले लोड पर दिखाने वाला पहला सेल है।
होप्स इस कोई मदद करता है, मैं जानता हूँ कि यह किया मेरे लिए, दुर्भाग्य से 3 पार्टी पुस्तकालयों का उपयोग इतना हतोत्साहित किया गया है कि मैं इस बुरे लड़के का निर्माण करने के लिए किया था (@He की मदद से था फिर, धन्यवाद!)
मैं मुझे डर है कि यह दृश्य में छवियों की तुलना में थोड़ा अधिक जटिल है, इन विचारों को स्टोरीबोर्ड से लोड किया गया है (जैसा कि निब्स का उपयोग करने और उन्हें लोड करने के विपरीत) और उनमें से प्रत्येक के पास अपने स्वयं के व्यू कंट्रोलर हैं और ऐसे में प्रवेश किया जाता है। इसके अलावा, uicollectionview का उपयोग, बिल्कुल अनिवार्य नहीं है, बाकी ऐप के साथ संगत रखने के लिए दृढ़ता से अनुशंसा की जाती है। क्या आपको लगता है कि मैं कोशिकाओं की संख्या को वास्तव में उच्च संख्या में सेट कर सकता हूं, फिर सामग्री और उसके सभी को अगले सेल पर ले जा सकता हूं? (मुझे लगता है कि मैंने कहीं कहीं देखा है, लेकिन इसमें प्रदर्शन समस्याएं नहीं होनी चाहिए?) – JakeTheBraek
भले ही यह अधिक जटिल हो, सिद्धांत समान होना चाहिए, जब आप अपने संग्रह दृश्य को आराम करने वाले स्थिति में रखते हैं तो आप अपने बैकिंग डेटा को घुमा रहे हैं। मैंने इसे बिना किसी समस्या के तालिका दृश्यों में स्क्रॉलव्यू, टेबलव्यू और टेबल दृश्यों के पदानुक्रमों पर सफलतापूर्वक किया है। यदि आप अपने बैकिंग डेटा से गड़बड़ नहीं करना चाहते हैं तो आप इसे इसके बजाय एक अस्थायी डेटा स्टोर और गड़बड़ में खींच सकते हैं? मैंने उच्च संख्या में कोशिकाओं की चीज भी की है, लेकिन यह केवल भ्रम को बनाए रखने के लिए है जबकि हम डेटा के माध्यम से लाइव स्क्रॉल कर रहे हैं। यह कभी अचूक नहीं होगा। – foundry
आपकी मदद के लिए धन्यवाद वह था, सिद्धांत यहाँ लगता है और मेरे संग्रहदृश्य में ठीक अनुवाद करना चाहिए। मैं आखिरी और इसके विपरीत के बाद पहले सेल को कोशिश करने और डुप्लिकेट करने जा रहा हूं और कोशिकाओं में स्नैप कर रहा हूं। एक बार बीमारियों को कम करने के बाद उपयोगकर्ता को "वास्तविक" पहले सेल या दिशा के आधार पर "असली" अंतिम सेल में ले जाया जाता है। अपनी उंगलियां क्रॉस कर रहा हूँ। – JakeTheBraek