【发布时间】:2014-09-11 22:45:30
【问题描述】:
我正在寻找有关如何最好地为 IOS 应用程序实现卡拉 OK 文本效果的建议。我是 IOS 新手,所以不熟悉所有各种动画 api 和库,我希望如果我指出学习哪些库的正确方向,我可以节省一些时间。
在 Javascript 中,我会使用包含音轨的各种单词和时间的数组,并使用 setTimeout 将数组中的下一个元素写入页面上的 div。我确实考虑在 UIWebView 中使用这种方法,但是在对 UIWebview 进行了一些快速测试后,我对它看起来的流畅程度并不满意。
我确实遇到了一个非常简单的动画教程,它循环遍历一组图像,但它具有统一的动画持续时间,在我的用例中不起作用,因为文字需要在屏幕上显示的时间长度会有所不同根据音频。这是我正在查看的示例代码。
NSArray *imageNames = @[@"win_1.png", @"win_2.png", @"win_3.png", @"win_4.png",
@"win_5.png", @"win_6.png", @"win_7.png", @"win_8.png",
@"win_9.png", @"win_10.png", @"win_11.png", @"win_12.png",
@"win_13.png", @"win_14.png", @"win_15.png", @"win_16.png"];
NSMutableArray *images = [[NSMutableArray alloc]init];
for (int i= 0; i < imageNames.count; i++) {
[images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];
}
UIImageView *animationImageView = [[UIImageView alloc] initWithFrame: CGRectMake(60,95, 86, 193)];
animationImageView.animationImages = images;
animationImageView.animationDuration = 0.5;
[self.view addSubview:animationImageView];
[animationImageView startAnimating];
UIImageView *slowAnimationImageView = [[UIImageView alloc] initWithFrame:CGRectMake(160, 95, 86, 193)];
slowAnimationImageView.animationImages = images;
slowAnimationImageView.animationDuration = 5;
[self.view addSubview:slowAnimationImageView];
[slowAnimationImageView startAnimating];
我在这里找到了该教程:http://www.appcoda.com/ios-programming-animation-uiimageview/
在此先感谢您对最佳方法的任何建议。
【问题讨论】:
-
你应该描述你想要完成的事情。卡拉 OK 效果到底是什么?
-
您还应该有一个
NSArray您想要的时间。像NSArray *durations = @[@2.1, @1.3 /* etc... */];这样的东西。然后,如果您将它们组合成这样的字典:NSDictionary* dict = [NSDictionary dictionaryWithObjects:durations forKeys:imageNames];,那么您可以轻松地用块枚举键-对象对。在块中,您为视图分配名为key的图像(因为key将遍历您的图像名称),然后等待[obj floatValue](这是与图像相关的时间)。我确信有更好的方法,这是相当“手动”的,但它有效。
标签: ios text uiviewanimation