मेरे पास पेजिंग सक्षम के साथ एक स्क्रॉल व्यू है और पेजों की एक संख्या एन है, जो स्क्रू व्यू के सबव्यूव के रूप में UIViews हैं।मैं अलग-अलग परतों के लिए एक दूसरे के बाद कोर एनिमेशन कैसे श्रृंखला कर सकता हूं?
उपयोगकर्ता को पेज संख्या n स्क्रॉल:
मैं निम्न कार्य करने की कोशिश कर रहा हूँ। उस बिंदु पर, 7 कैलियर जिन्हें पहले पृष्ठ संख्या एन (यानी पृष्ठ [[scrollView सबव्यूज] ऑब्जेक्टएट इंडेक्स: एन -1] .layer subLayers] में जोड़ा गया था, एक दूसरे के बाद एक में फीका।
लेकिन मैं यह नहीं समझ सकता कि कैलियर को अनुक्रमिक रूप से कैसे बनाया जाए। अब तक, मैंने अपने नियंत्रक के प्रतिनिधि विधि से निम्नलिखित 3 दृष्टिकोणों का प्रयास किया है: (मान लें कि मेरे पास परतों के लिए एक सरणी है और उनकी अस्पष्टता सृजन पर 0 पर सेट किया गया था)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int pageNumber = floor(self.scrollView.contentOffset.x/self.scrollView.frame.size.width);
if(pageNumber == (n-1))
{
int timeOffset = 0;
[CATransaction begin];
for(CALayer *layer in layerArray)
{
CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"opacity"];
a.duration = 6;
a.beginTime = timeOffset++;
a.fromValue = [NSNumber numberWithFloat:0.];
a.toValue = [NSNumber numberWithFloat:1.];
[layer addAnimation:a forKey:nil];
}
[CATransaction commit];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int pageNumber = floor(self.scrollView.contentOffset.x/self.scrollView.frame.size.width);
if(pageNumber == (n-1))
{
int timeOffset = 0;
[CATransaction begin];
for(CALayer *layer in layerArray)
{
CABasicAnimation *a = [CABasicAnimation animation];
a.duration = 6;
a.beginTime = timeOffset++;
[layer addAnimation:a forKey:@"opacity"];
[layer setOpacity:1];
}
[CATransaction commit];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int pageNumber = floor(self.scrollView.contentOffset.x/self.scrollView.frame.size.width);
if(pageNumber == (n-1))
{
int timeOffset = 0;
for(CALayer *layer in layerArray)
{
[CATransaction begin];
CABasicAnimation *a = [CABasicAnimation animation];
a.duration = 6;
a.beginTime = timeOffset++;
[layer addAnimation:a forKey:@"opacity"];
[layer setOpacity:1];
}
for(CALayer *layer in layerArray)
[CATransaction commit];
}
}
लेकिन न तो काम करता है। जब उपयोगकर्ता सही पृष्ठ पर स्क्रॉल करता है, तो सभी परतें एक बार में दिखाई देती हैं, बिना किसी फीका के और निश्चित रूप से किसी अनुक्रमिक क्रम में नहीं।
कोई विचार?