xcode UIScrollview无法顺利滚动

时间:2012-04-19 10:24:25

标签: iphone xcode uiscrollview

我想显示一系列缩略图,您可以在其中看到下一个缩略图的一部分,类似于应用商店的工作方式。

我的问题是滚动到下一张图片并不顺畅。如果您向左滑动太慢,它会反弹到同一页面,但如果滚动得太快,它会滚动得太远,然后反弹回到下一张幻灯片。我怎样才能使这个应用程序商店与此类似。我认为函数scrollViewDidScroll可以做到这一点,但是无法让它工作,所以到目前为止我的代码是:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

   int page = scrollView.contentOffset.x / scrollView.frame.size.width;

   pageControl.currentPage = page;
   CGRect frame = scroller.frame;

   if (page == 0) {
     frame.origin.x = 0
   }
    else if (page == 1) {
     frame.origin.x = 195;
   }   

   else if (page == 2) {
     frame.origin.x = 410;
   } 

   else if (page == 3) {
     frame.origin.x = 630;
   } 

   frame.origin.y = 0;

    [scroller scrollRectToVisible:frame animated:Yes];

}
- (void)viewDidLoad
 {
   [super viewDidLoad];
    for (int i=1; i < 5; i++) {
     if (i == 1) {
       imagen.frame = CGRectMake(30, 0, 217, 317);
     }
     else {
       imagen.frame = CGRectMake((i-1)*217 + 30, 0, 217, 317);
     }

     [scroller addSubView:imagen];

    }

  scroller.delegate = self;
  scroller.contentSize = CSizeMake(320*4, 317);
  scroller.pagingEnabled = YES;

  pageControl.numberOfPages=4;
  pagecontrol.currentPage=0;

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { int page = scrollView.contentOffset.x / scrollView.frame.size.width; pageControl.currentPage = page; CGRect frame = scroller.frame; if (page == 0) { frame.origin.x = 0 } else if (page == 1) { frame.origin.x = 195; } else if (page == 2) { frame.origin.x = 410; } else if (page == 3) { frame.origin.x = 630; } frame.origin.y = 0; [scroller scrollRectToVisible:frame animated:Yes]; } - (void)viewDidLoad { [super viewDidLoad]; for (int i=1; i < 5; i++) { if (i == 1) { imagen.frame = CGRectMake(30, 0, 217, 317); } else { imagen.frame = CGRectMake((i-1)*217 + 30, 0, 217, 317); } [scroller addSubView:imagen]; } scroller.delegate = self; scroller.contentSize = CSizeMake(320*4, 317); scroller.pagingEnabled = YES; pageControl.numberOfPages=4; pagecontrol.currentPage=0;

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

滚动分配了哪里?

将分页启用设置为false。