Я создаю приложение для iPhone с большим панорамным изображением на 360 градусов. Панорама представляет собой CATiledLayer в UIScrollView.
Я пытаюсь реализовать бесконечную прокрутку изображения (только по горизонтали ). Я сделал это, создав подкласс UIScrollView и реализовав setContentOffset :и 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, не влияя на замедление?
Было предложено здесь , что переопределение setContentOffset:(не setContentOffset :анимированного :)устраняет эту проблему, но я не могу заставить это работать.
Я также безуспешно пробовал использовать 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);
}
}