ios - 通过编程滚动UIScrollView

我有一个UIScrollView,它有几个视图。 当用户滚动手指时,视图会滚动到右侧或左侧,具体取决于手指笔势的方向。 基本上我的代码工作方式类似于iPhone照片应用程序。 现在,我是否可以通过编程方式实现同样的功能,这样我就可以通过单击一个按钮,并在每个滚动之间进行可配置的暂停来结束幻灯片。

如何使用 UIScrollView 进行幻灯片演示?

时间:

可以滚动到滚动视图中的某个点


[scrollView setContentOffset:CGPointMake(x, y) animated:YES];

做幻灯片使用UIScrollView,你安排所有图片在滚动视图中,设置一个重复定时器,然后 -setContentOffset:animated: 计时器被激发时。

但是一种更有效的方法是使用 2 个图像视图,并使用转换交换它们,或者在计时器触发时。 有关详细信息,请参阅 http://stackoverflow.com/questions/1631170/iphone-image-slideshow

如果要控制动画的持续时间和样式,可以执行以下操作:


[UIView animateWithDuration:2.0f delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ scrollView.contentOffset = CGPointMake(x, y);
} completion:NULL];

调整持续时间( 2.0f ) 和选项( UIViewAnimationOptionCurveLinear ) !

另一种方法是


scrollView.contentOffset = CGPointMake(x,y);


- (void)viewDidLoad
{ [super viewDidLoad]; board=[[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view. frame.size.height, 80)]; board.backgroundColor=[UIColor greenColor]; [self.view addSubview:board]; // do any additional setup after loading the view.
}


-(void)viewDidLayoutSubviews
{ NSString *str=@"ABCDEFGHIJKLMNOPQRSTUVWXYZ"; index=1; for (int i=0; i<20; i++) { UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(-50, 15, 50, 50)]; lbl.tag=i+1; lbl.text=[NSString stringWithFormat:@"%c",[str characterAtIndex:arc4random()%str.length]]; lbl.textColor=[UIColor darkGrayColor]; lbl.textAlignment=NSTextAlignmentCenter; lbl.font=[UIFont systemFontOfSize:40]; lbl.layer. borderWidth=1; lbl.layer. borderColor=[UIColor blackColor].CGColor; [board addSubview:lbl]; } [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(CallAnimation) userInfo:nil repeats:YES]; NSLog(@"%d",[board subviews].count);
}


-(void)CallAnimation
{ if (index>20) { index=1; } UIView *aView=[board viewWithTag:index]; [self doAnimation:aView]; index++; NSLog(@"%d",index);
}

-(void)doAnimation:(UIView*)aView
{ [UIView animateWithDuration:10 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ aView.frame=CGRectMake(self.view.frame.size.height, 15, 50, 50); } completion:^(BOOL isDone) { if (isDone) { //do Somthing aView.frame=CGRectMake(-50, 15, 50, 50); } }];
}

...