的減速我創建一個大的,360度,全景圖像的iPhone應用程序。全景圖是UIScrollView中的CATiledLayer。無限滾動 - setContentOffset:停止的UIScrollView
我正試圖在圖像上實現無限滾動(僅限水平方向)。和setContentOffset:動畫:我已經通過繼承的UIScrollView和實施setContentOffset做到了這一點,這完美的作品,當用戶拖動滾動視圖。但是,當用戶擡起手指並且滾動視圖正在減速時,更改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:動畫:沒有成功。
任何想法如何解決這個問題將不勝感激。謝謝!
編輯:
代碼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);
}
}
爲了避免需要'UIScrollViewDecelerationFast',你可以使'contentSize'非常大,從你的三寬度內容視圖和視點開始,並安排內容視圖在滾動時重新定位;那麼,當減速停止時,將所有的東西都放回到中間。 – hatfinch
@hatfinch感謝您的評論。這幾乎是我最終做的,但我不能100%確定你的意思是「安排在滾動時重新定位內容視圖」。你能解釋這將如何工作? –
它會像您所描述的方法一樣工作,除非不削弱減速以確保用戶無法滾動三倍寬度全景,而是移動全景。因此,對於「內容視圖」ABC,您在滾動視圖中有xxxABCxxx(x僅爲空白),並且當用戶滾動例如在左側滾動一個圖像寬度後,移動內容視圖,以便擁有xxABCxxxx。除了你用這麼多'x'來做它,他們必須非常慎重地試圖達到邊緣。那有意義嗎? – hatfinch