我有两个NSArray
。一个持有一些.png
而另一个持有一些持续时间0.04
。
像:
imageArray
(
"smiley64_1_1.png",
"smiley64_1_2.png",
...................
...................
"smiley64_1_19.png",
"smiley64_1_20.png"
)
和
durationArray
(
"0.04",
"0.04",
......
......
"0.05",
"0.02"
)
我使用UIImageView
在performSelector
中显示它们,以便它们可以像动画一样(表情符号)。
-(void) imageAnimationWithImage:(NSArray *) imgarray andDurationArray:(NSArray *) durationArr
{
if (count == imgarray.count)
{
count = 0;
[self imageAnimationWithImage:imgarray andDurationArray:durationArr];
}
else
{
emoImageView.image = [UIImage imageNamed:[imgarray objectAtIndex:count]];
double delay = [[durationArr objectAtIndex:count] doubleValue];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self imageAnimationWithImage:imgarray andDurationArray:durationArr];
});
count++;
}
}
从这个方法中调用它:
-(void) createScrollWithImageArray:(NSArray *) imgArray AndDurationArray:(NSArray *) durArray AndName:(NSString *) name withCount:(NSInteger) i
{
int imageViewPointx = 8;
int imageViewPointy = 8;
int imageViewWidth = 42;
int imageViewHeight = 43;
int gapBetweenImageViews = 12;
i = i - 1;
emoImageView = [[UIImageView alloc] init];
[emoImageView setFrame:CGRectMake((imageViewPointx +((imageViewWidth + gapBetweenImageViews) *i)), imageViewPointy, imageViewWidth, imageViewHeight)];
count = 0;
[self imageAnimation];
[emoImageView setUserInteractionEnabled:YES];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)];
[singleTap setNumberOfTapsRequired:1];
[emoImageView addGestureRecognizer:singleTap];
[scrollView addSubview:emoImageView];
}
最后一种方法是从for loop
调用。当我运行它时,每次都得到3个信息。
在这种情况下,它只调用一次,因为我只有一个帧信息(图像名称和持续时间)。它运作完美。但如果我有多组信息,如:
imageArray
(
"smiley64_2_1.png",
"smiley64_2_2.png",
...................
...................
"smiley64_2_19.png",
"smiley64_2_20.png"
)
durationArray
(
"0.02",
"0.02",
......
......
"0.05",
"0.02"
)
和
imageArray
(
"smiley64_2_1.png",
"smiley64_2_2.png",
...................
...................
"smiley64_2_19.png",
"smiley64_2_20.png"
)
durationArray
(
"0.02",
"0.02",
......
......
"0.05",
"0.02"
)
它不起作用。实际上它只为最后一个数组信息设置了动画。所以,我的问题是如何在不同的UIImageView中同时为所有信息集制作动画?如果您有任何疑问,请问我。 非常感谢提前。祝你有个美好的一天。
添加:项目代码: "Click here"
答案 0 :(得分:1)
你的问题不是很清楚。你说你"得到3个信息",然后列出数组名称(Frame1),imageArray和DurationArray。
我不明白第一个是什么。 "数组名称(Frame1)"。那是什么?
您的方法createScrollWithImageArray需要4个参数,包括AndName和withCount。它根本不清楚它们的用途。
你递增你的计数变量i,但是从不对它做任何其他事情,所以它增加的事实是没有意义的。
我认为你要做的是传递不同的图像名称和持续时间数组,并使用这些不同的数组使代码动画化。
在我看来,你和我很近。只需添加2个参数即可 在createScrollWithImageArray中,只需将图像名称数组和持续时间数组传递给imageAnimation方法,并使用这些数组而不是全局数组来执行动画。然后在createScrollWithImageArray中,将图像名称数组和持续时间数组传递给imageAnimation。
至于你想要的数组名称和计数,我不知道。