我正在创建具有360度大型全景图像的iPhone应用程序。全景图是UIScrollView中的CATiledLayer。

我正在尝试在图像上实现无限滚动(仅水平)。我通过子类化UIScrollView并实现setContentOffset:和setContentOffset:animated:来完成此操作,当用户拖动scrollview时,此方法可以完美地工作。但是,当用户抬起手指并且滚动 View 正在减速时,更改contentOffset会使减速立即停止。

- (void)setContentOffset:(CGPoint)contentOffset
{
    CGPoint tempContentOffset = contentOffset;

    if ((int)tempContentOffset.x >= 5114)
    {
        tempContentOffset = CGPointMake(1, tempContentOffset.y);
    }
    else if ((int)tempContentOffset.x <= 0)
    {
        tempContentOffset = CGPointMake(5113, tempContentOffset.y);
    }

    [super setContentOffset:tempContentOffset];
}

有什么方法可以更改contentOffset而不影响减速度吗?

建议here重写setContentOffset :(而不是setContentOffset:animated :)可解决此问题,但我似乎无法使其正常工作。

我也尝试了scrollRectToVisible:animated:没有成功。

任何有关如何解决此问题的想法将不胜感激。谢谢!

编辑:

scrollViewDidScroll的代码:
-(void)scrollViewDidScroll:(PanoramaScrollView *)scrollView
{
    [panoramaScrollView setContentOffset:panoramaScrollView.contentOffset];
}

我也尝试过这个:
-(void)scrollViewDidScroll:(PanoramaScrollView *)scrollView
{
    CGPoint tempContentOffset = panoramaScrollView.contentOffset;

    if ((int)tempContentOffset.x >= 5114)
    {
        panoramaScrollView.contentOffset = CGPointMake(1, panoramaScrollView.contentOffset.y);
    }
    else if ((int)tempContentOffset.x == 0)
    {
        panoramaScrollView.contentOffset = CGPointMake(5113, panoramaScrollView.contentOffset.y);
    }
}

最佳答案

代替

[scrollView setContentOffset:tempContentOffset];


scrollView.contentOffset = tempContentOffset;

10-08 07:29