我有一组 4 张图像,我想在UIScrollView
. 此滚动视图包含广告横幅。所以他们必须保持自动垂直向下滚动,类似于选框效果——用户不需要触摸屏幕来滚动。这个过程应该不断重复。
如果用户触摸屏幕,滚动应该停止,当用户重新触摸屏幕时,滚动应该从它离开的地方重新开始。
我有一组 4 张图像,我想在UIScrollView
. 此滚动视图包含广告横幅。所以他们必须保持自动垂直向下滚动,类似于选框效果——用户不需要触摸屏幕来滚动。这个过程应该不断重复。
如果用户触摸屏幕,滚动应该停止,当用户重新触摸屏幕时,滚动应该从它离开的地方重新开始。
我猜还有更简单的方法。UIImageView可以帮助你。按着这些次序 :
UIImageView
1)垂直向下增加 4秒。
2) 为这些 ImageViews 创建 4 个不同的数组。
NSArray *frames1 = [NSArray arrayWithObjects:[UIImage imageWithName:@"a.png"],[UIImage imageWithName:@"b.png"],[UIImage imageWithName:@"c.png"],[UIImage imageWithName:@"d.png"],nil];
NSArray *frames2 = [NSArray arrayWithObjects:[UIImage imageWithName:@"b.png"],[UIImage imageWithName:@"c.png"],[UIImage imageWithName:@"d.png"],[UIImage imageWithName:@"a.png"],nil];
NSArray *frames3 = [NSArray arrayWithObjects:[UIImage imageWithName:@"c.png"],[UIImage imageWithName:@"d.png"],[UIImage imageWithName:@"a.png"],[UIImage imageWithName:@"b.png"],nil];
NSArray *frames4 = [NSArray arrayWithObjects:[UIImage imageWithName:@"d.png"],[UIImage imageWithName:@"a.png"],[UIImage imageWithName:@"b.png"],[UIImage imageWithName:@"c.png"],nil];
3) 将这些数组提供给所有这些不同的 ImageView。
yourImageView1.animationImages = frames1;
yourImageView2.animationImages = frames2;
yourImageView3.animationImages = frames3;
yourImageView4.animationImages = frames4;
4)您还可以添加一些效果...
// all frames will execute in 1.75 seconds
yourImageView.animationDuration = 1.75;
// repeat the annimation forever
yourImageView.animationRepeatCount = 0;
5) 简单startAnimating
的 ImageViews。
[yourImageView1 startAnimating];
[yourImageView2 startAnimating];
[yourImageView3 startAnimating];
[yourImageView4 startAnimating];
6)您可以随时使用-touchesEnded
方法来启动和停止动画。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
if ([[touches anyObject] view] == yourImageView1) {
//Here you can write the code to stop and start Animation of UIImageView
}
}
我认为这会给你你想要的效果。
祝你好运 !!!
这就是我最终做到的方式:-)。
从 viewDidLoad 调用下面的方法
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(scrollTheScrollView) userInfo:nil repeats:YES];
现在实现方法
-(void)scrollTheScrollView{
static int i=0;
i++;
if(self.scrollView.contentOffset.y == 700.0)//This 700.0 will be different for you
i=0;
NSLog(@"Content offset in scrolling method is %@",self.scrollView);
[self.scrollView setContentOffset:CGPointMake(0, i*5)];}
如果您有兴趣,我为此制作了一个 API。