मैं छोटे टाइल में स्क्रीन को अलग कर रहा हूँ, तो प्रत्येक टाइल एनिमेट एक संक्रमण प्रदर्शन करने के लिए:एकाधिक CALayers एनिमेशन - भरें मोड
for (int x=0; x<number_of_x_splits; x++) {
for (int y=0; y<number_of_y_splits; y++) {
CGSize splitSize = CGSizeMake(screenBounds.width/number_of_x_splits, screenBounds.height/number_of_y_splits);
CATransformLayer *transformLayer = [CATransformLayer layer];
[transformLayer setFrame:CGRectMake(splitSize.width * x, splitSize.height * y, splitSize.width, splitSize.height)];
[transformLayer setPosition:CGPointMake((splitSize.width * x) + splitSize.width/2, (splitSize.height * y) + splitSize.height/2)];
... adding some sublayers to transformLayer...
CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
[rotate setDuration:5.0];
[rotate setFromValue:[NSNumber numberWithFloat:0]];
[rotate setToValue:[NSNumber numberWithFloat:M_PI]];
[rotate setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[rotate setTimeOffset:(1/(number_of_x_splits + number_of_y_splits)) * (x+y)];
[rotate setFillMode:kCAFillModeForwards];
[rotate setRemovedOnCompletion:NO];
[transformLayer addAnimation:rotate forKey:@"transform.rotation.y"];
}
}
समस्या यह है कि केवल श्रृंखला में पिछले CALayer अंतिम स्थिति में बनी हुई है। मैं भी CALayer अंतिम बदलने मान सेट करने की कोशिश की है:
[transformLayer setTransform:CATransform3DMakeRotation(M_PI, 0, 1, 0)];
मुझे लगता है कि यह पाश में CALayer का एक और उदाहरण बनाने पिछले परत के गुण रीसेट साथ क्या करना है।
किसी के पास कोई सुझाव है कि स्थिति का समाधान कैसे करें?
दरअसल !! यह हल करता है। अब से कोई टाइम ऑफसेट नहीं !! बहुत धन्यवाद! – Nimrod7
स्टार्टटाइम CACurrentMediaTime() + yourDelay होना चाहिए जब तक कि एनीमेशन एनीमेशन समूह का हिस्सा न हो। उस स्थिति में यह मूल एनीमेशन समूह की शुरुआत से शुरू होने पर आधार का मान मानता है। –
@DuncanC बहुत अच्छा बिंदु। –