Tôi đang tạo một ứng dụng iPhone có hình ảnh toàn cảnh 360 độ lớn. Bức tranh toàn cảnh là một CATiledLayer trong một UIScrollView.Cuộn vô hạn - setContentOffset: dừng giảm tốc độ UIScrollView
Tôi đang cố gắng triển khai cuộn vô hạn trên hình ảnh (chỉ theo chiều ngang). Tôi đã làm điều này bằng cách phân lớp UIScrollView và triển khai setContentOffset: và setContentOffset: animated: và nó hoạt động hoàn hảo khi người dùng đang kéo scrollview. Tuy nhiên, khi người dùng đã nhấc ngón tay lên và chế độ xem cuộn xuống đang giảm tốc, việc thay đổi contentOffset làm giảm tốc độ dừng ngay lập tức.
- (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];
}
Có cách nào để thay đổi contentOffset mà không ảnh hưởng giảm tốc?
Đã được đề xuất here ghi đè setContentOffset: (không setContentOffset: animated :) khắc phục vấn đề này, nhưng dường như tôi không làm được.
Tôi cũng đã thử scrollRectToVisible: hoạt ảnh: không thành công.
Bất kỳ ý tưởng nào về cách khắc phục sự cố này sẽ được đánh giá rất nhiều. Cảm ơn!
EDIT:
Mã cho scrollViewDidScroll:
-(void)scrollViewDidScroll:(PanoramaScrollView *)scrollView
{
[panoramaScrollView setContentOffset:panoramaScrollView.contentOffset];
}
Tôi cũng đã cố gắng này:
-(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);
}
}
Để tránh nhu cầu 'UIScrollViewDecelerationFast', bạn có thể làm cho' contentSize' rất lớn, bắt đầu với chế độ xem nội dung ba chiều và điểm quan sát ở giữa, và sắp xếp cho chế độ xem nội dung đó để được định vị lại trong khi cuộn; sau đó, khi giảm tốc dừng lại, đặt mọi thứ trở lại ở giữa một lần nữa. – hatfinch
@hatfinch Cảm ơn bạn đã bình luận. Đó là khá nhiều những gì tôi đã kết thúc làm, nhưng tôi không chắc chắn 100% những gì bạn có nghĩa là "sắp xếp cho rằng xem nội dung được định vị lại trong khi di chuyển". Bạn có thể giải thích làm thế nào điều này sẽ làm việc? –
Nó sẽ hoạt động giống như phương pháp bạn mô tả, ngoại trừ thay vì làm tê liệt giảm tốc để đảm bảo rằng người dùng không thể cuộn hết ảnh toàn cảnh ba chiều, bạn đang di chuyển toàn cảnh. Vì vậy, đối với chế độ xem "nội dung" ABC, bạn có xxxABCxxx trong scrollview (x chỉ là khoảng trống) và khi người dùng cuộn, ví dụ: ở bên trái, sau khi họ đã cuộn một chiều rộng hình ảnh, bạn di chuyển chế độ xem nội dung để bạn có xxABCxxxx. Ngoại trừ việc bạn làm điều đó với rất nhiều 'x' mà họ sẽ phải rất cố ý về việc cố gắng để đạt được các cạnh. Điều đó có ý nghĩa? – hatfinch