Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios开发中的定时动画_Ios_Text_Uiviewanimation - Fatal编程技术网

Ios开发中的定时动画

Ios开发中的定时动画,ios,text,uiviewanimation,Ios,Text,Uiviewanimation,我正在寻找关于如何在IOS应用程序中最好地实现卡拉OK文本效果的建议。我是IOS新手,所以我不熟悉所有的动画API和库,我希望如果有人告诉我应该学习哪些库,我可以节省一些时间 在Javascript中,我会使用一个包含各种单词和音轨计时的数组,并设置timeout将数组中的下一个元素写入页面上的div。我确实考虑过在UIWebVIEW中使用这种方法,但是在使用UIWebVIEW进行了一些快速测试之后,我对它看起来是多么的不太满意。p> 我确实遇到过一个非常简单的动画教程,它循环遍历一系列图像,但

我正在寻找关于如何在IOS应用程序中最好地实现卡拉OK文本效果的建议。我是IOS新手,所以我不熟悉所有的动画API和库,我希望如果有人告诉我应该学习哪些库,我可以节省一些时间

在Javascript中,我会使用一个包含各种单词和音轨计时的数组,并设置timeout将数组中的下一个元素写入页面上的div。我确实考虑过在UIWebVIEW中使用这种方法,但是在使用UIWebVIEW进行了一些快速测试之后,我对它看起来是多么的不太满意。p> 我确实遇到过一个非常简单的动画教程,它循环遍历一系列图像,但它有一个统一的动画持续时间,在我的用例中,这是不起作用的,因为单词在屏幕上显示的时间长度会根据音频的不同而变化。下面是我正在查看的示例代码

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];
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*图像=[[NSMutableArray alloc]init];
对于(int i=0;i
我在这里找到了教程:


提前感谢您对哪种方法最好的建议

所以,我已经实现了您所描述的,我可以告诉您CoreText是您需要使用的API。只有通过CoreText渲染,才能以不同的颜色渲染特定的单词部分,并在特定时间应用颜色更改。但是,坏消息是,这个API并不容易使用。您可以在以下github项目链接的文件MutableAttrString.m和AVOfflineComposition.m中找到工作示例代码。您需要的最低代码是MutableAttrString.m文件,它显示了如何使用CoreText正确实现所描述的逻辑。您可以尝试使用动画位图来推出您自己的解决方案,但CoreText方法只是渲染文本,因此出于许多原因,它要好得多。

您应该描述您试图实现的目标。卡拉OK的效果到底是什么?你还应该有你想要的时间安排。类似于
NSArray*durations=@[@2.1、@1.3/*等...*/]。然后,如果您像这样将它们组合到一个字典中:
NSDictionary*dict=[NSDictionary dictionary-withobjects:durations-forKeys:imageNames]然后您可以轻松地用块枚举键对象对。在块中,为视图指定名为
key
的图像(因为
key
将遍历图像名称),然后等待
[obj floatValue]
(这是与图像相关联的时间)。我确信有更好的方法,这是相当“手动”的,但它可以工作。我最终将我的字符串转换为NSMutableStrings。然后我可以计算字符串并更改前x个字符的属性。