Dưới đây là mã override của tôi - nó chỉ tính toán nơi để chụp để:UIScrollView không phải lúc nào động giảm tốc độ khi trọng scrollViewWillEndDragging
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
if(targetContentOffset->y < 400) {
targetContentOffset->y = 0;
return;
}
int baseCheck = 400;
while(baseCheck <= 10000) {
if(targetContentOffset->y > baseCheck && targetContentOffset->y < baseCheck + 800) {
targetContentOffset->y = (baseCheck + 340);
return;
}
baseCheck += 800;
}
targetContentOffset->y = 0;
}
Khi tôi giữ ngón tay của tôi xuống hơn một hoặc hai giây để kéo scrollview và sau đó nhấc ngón tay của tôi, nó thường hoạt hình vào vị trí. Tuy nhiên, khi tôi thực hiện một "flick" nhanh, nó hiếm khi hoạt hình - nó chỉ snaps đến targetContentOffset. Tôi đang cố gắng mô phỏng hành vi phân trang mặc định (ngoại trừ việc cố gắng chụp các vị trí tùy chỉnh).
Bất kỳ ý tưởng nào?
tôi đã cố gắng điều này với một UICollectionView ngang, và trong khi nó làm việc, các hình ảnh động kết quả là bồn chồn; Tôi nghĩ có hai hình động đang diễn ra cùng một lúc. Gói 'setContentOffset:' trong 'dispatch_async' đã sửa nó. – JLundell
Bạn đã bao giờ làm cho nó 'hoàn hảo' cách? – Lukasz