无限滚动 – setContentOffset:停止UIScrollView的减速
我正在创建一个带有360度全景图像的iPhone应用程序。 全景图是UIScrollView中的CATiledLayer。
我试图在图像上实现无限滚动(仅水平)。 我通过inheritanceUIScrollView并实现setContentOffset:和setContentOffset:animated来完成此操作:当用户拖动滚动视图时,这非常有效。 但是,当用户抬起手指并且滚动视图正在减速时,更改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?
这里建议覆盖setContentOffset :(不是setContentOffset:animated :)修复了这个问题,但我似乎无法让它工作。
我也尝试过scrollRectToVisible:动画:没有成功。
如何解决这个问题的任何想法将不胜感激。 谢谢!
编辑:
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); } }
我通过解决方法解决了这个问题。 我创建了一个全景图像,其中包含3个全景宽度(不会影响性能,因为我使用的是CATiledLayer
),并将decelerationRate
属性设置为UIScrollViewDecelerationFast
。 因此,用户在减速停止之前不能滚动太远,并且如果减速停止在左或右全景图像中,则内容偏移然后改变回中间图像。 这有无限滚动的外观,这是我能想到的最佳解决方案。
代替
[scrollView setContentOffset:tempContentOffset];
使用
scrollView.contentOffset = tempContentOffset;
我会尝试使用UIScrollViewDelegate协议方法:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
用户滚动时调用它(即使它正在减速)
在里面我会改变contentoffset
我最近做了同样的无限滚动,并意外地找到了解决方案:
只需设置bounces=YES
, alwaysBounceHorizontal=YES
或/和alwaysBounceVertical=YES
(取决于您滚动到的方向)。
就是这样,这适合我。 🙂
- sizeWithFont:constrainedToSize:不推荐使用lineBreakMode
- closures导航控制器中的推送视图
- “这个项目不能共享。 请select其他项目。“WhatsApp iOS共享扩展失败消息
- NSMutableArray分配init与NSMutableArray数组
- 在iPhone应用程序中使用XML-RPC
- iOS上的NSNetServiceBrowser / Bonjour问题
- 使用mp3元数据或HTML在iPhonelocking屏幕上显示图稿和曲目名称
- XCode:当用户点击UITextbox时显示UIDatePicker
- 为什么在启动我的iPhone OS应用程序时遇到“安全策略错误”?