UIScrollview具有分页效果

时间:2013-05-30 10:31:09

标签: iphone ios uiscrollview pagination

我有一个uiscrollview。 Scrollview包含多个uiview作为子视图。我希望​​像scrollview一样分页动画效果。我设置了scrollview.pagingEnabled = NO。

以下是我的代码

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView  {
lastContentOffset = scrollView.contentOffset.x;

}


-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

    ScrollDirection scrollDirection;
    if (self.lastContentOffset >scrollView.contentOffset.x) {
        scrollDirection = ScrollDirectionRight; } else if (self.lastContentOffset < scrollView.contentOffset.x)  {
        scrollDirection = ScrollDirectionLeft;
         }

    if (scrollDirection==ScrollDirectionRight) {
        CGFloat xOffset = scrollview.contentOffset.x;
        CGFloat yOffset = scrollview.contentOffset.y;

        if (scrollview.contentOffset.x != scrollview.frame.origin.x)
        {


            [scrollview setContentOffset:CGPointMake(xOffset- 320, yOffset) animated:YES];                     


        }

        NSLog(@" ScrollDirectionRight custom  x==%f %f", scrollview.contentOffset.x, scrollview.contentSize.width);


    } else if(scrollDirection==ScrollDirectionLeft) {
        CGFloat xOffset = scrollview.contentOffset.x;
        CGFloat yOffset = scrollview.contentOffset.y;

        if ((scrollview.contentOffset.x != scrollview.frame.origin.x) )
        {
            [scrollview setContentOffset:CGPointMake(xOffset + 320, yOffset) animated:YES];

        }
        NSLog(@"ScrollDirectionLeft custom  x==%f %f", scrollview.contentOffset.x, scrollview.contentSize.width);

           }
    }

通过这段代码即可获得分页效果。但效果并不顺畅。

由于

1 个答案:

答案 0 :(得分:0)

查看UIScrollViewDelegate方法

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset

在此回调中,您将“targetContentOffset”修改为您希望看到滚动偏移动画结束的位置。

使用它可以使自定义分页实现更加顺畅。