脚本animation阻止iOS

我正在尝试制作一系列全屏幕图像的animation。 每个图像将以不同的方式进行animation。 我想将这些animation存储在数据库或plist或其他任何地方,我只是不想让它们硬编码。 animation将会非常简单,图片中的物体会轻微晃动或弹跳,或者您有什么。 我将使用块为对象设置animation,理想情况下,我希望将各个块存储在数据存储中。 我想避免使用单独的脚本语言或类似的东西。

我最好的行动是什么?

如果你想把它们存放在例如plist中,你可以这样做:

<plist> <array> <dict> <key>filename</key> <string>first.jpg</string> <key>animation</key> <string>bounce</string> <key>duration</key> <real>0.5</real> </dict> <dict> <key>filename</key> <string>second.jpg</string> <key>animation</key> <string>easeinout</string> <key>duration</key> <real>1.0</real> </dict> <!-- et cetera --> </array> </plist> 

然后,您可以通过编写类似下面的代码片段来将其解码为实际的animation:

 - (void)loadAnimations { NSArray *animations = [NSArray arrayWithContentsOfFile:@"/Users/H2CO3/animations.plist"]; for (NSDictionary *animation in animations) { UIImage *img = [UIImage imageNamed:[animation objectForKey:@"filename"]]; NSString *animationType = [animation objectForKey:@"animation"]; float duration = [(NSNumber *)[animation objectForKey:@"duration"] floatValue]; if ([animationType isEqualToString:@"bounce"]) { /* animation block 1 */ } else if ([animationType isEqualToString:@"easeinout"]) { /* animation block 2 */ } /* Et cetera... */ } } 

如果可能的话,我不清楚在数据存储中存储animation有什么好处。 如果你只是不想重复animation代码,你可以把它放在一个方法,并将视图传递给方法。

 -(void)jiggle:(UIView *)image { [UIView animateWithDuration:.1 delay:0 options:UIViewAnimationOptionLayoutSubviews animations:^{ image.transform = CGAffineTransformMakeRotation(-5 * M_PI / 180); } completion:^(BOOL finished){ [UIView animateWithDuration:.1 delay:0 options:UIViewAnimationOptionLayoutSubviews animations:^{ image.transform = CGAffineTransformMakeRotation(5 * M_PI / 180); } completion:^(BOOL finished){ [UIView animateWithDuration:.1 delay:0 options:UIViewAnimationOptionLayoutSubviews animations:^{ image.transform = CGAffineTransformMakeRotation(0 * M_PI / 180); } completion:nil ]; } ]; } ]; }