이미지를 느슨하게로드하는 것과 같은 일을 스크롤보기에서 수행합니다. 우리는 사실 이미지가 흐릿한 저해상도 버전으로 만드는 썸네일을로드 한 다음 페이지가 실제로보기에 100 % 표시 될 때 실제 이미지를로드해야했습니다.
내가해야 할 일은 scrollViewDidScroll에서 다음 코드를 사용하는 것입니다. scrollView.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (!_isCurrentlyRotating) {
CGFloat pageWidth = _scrollView.frame.size.width;
int page = floor((_scrollView.contentOffset.x - pageWidth/2)/pageWidth)+1;
if (_currentPage != page)
[self setCurrentPage:page];
}
}
위의 예는 표시 될 페이지를 계산합니다 (스크롤로 사용). 페이지 뷰가 50 % 표시 될 때 실제로 현재 페이지 번호가 변경됩니다. 이 컨트롤을 페이지 컨트롤과 함께 사용하여 현재 페이지 점을 강조 표시 할 수 있습니다.
사용자가 손가락을 사용하여 페이지를 바꿀 때 (정상 동작) scrollviewDidEndDecelerating : scrollView는 페이지가 100 % 표시 될 때 호출됩니다 (스크롤 뷰에서 페이징이 사용 가능). 100 %는 한 페이지 만 다른 페이지의 일부로 볼 수 없음을 의미합니다.
하지만 scrollToPage : 함수를 호출하는 스크롤보기 끝에 '시작'버튼이 있습니다. 로 scrollRectToVisible를 사용
- (void) scrollToPage:(int)page {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * page;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES];
}
는 : 애니메이션 다음 scrollViewDidEndDecelerating를 트리거하지 않는 방법 : 방법은 그래서 단순히 (단순 이미지보기에 테 고해상도 이미지를로드) 선명 방법 두 가지 방법으로 전화를 추가 그것을 호출 할 수 있도록 사용자가 스크롤하거나 처음부터 다시 시작 버튼을 누르면.
- (void) scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
[self sharpenImageView];
}
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
[self sharpenImageView];
}
이 정보가 도움이 되었기를 바랍니다.
오프셋을 변경하지 않는 경우 어떻게 스크롤을 구현합니까? 여러 가지 응용 프로그램에서이 작업을 여러 번 해봤으며 사용자가 설명하는 모든 작업은 "일반적인"방법 (scrollRectToVisible)으로 구현할 수 있으며 달성하려는 효과에 따라 애니메이션 부분을 지능적으로 사용/사용 중지 할 수 있습니다. 여기 당신이 뭔가 이상한 일을하고있는 것 같군요? – Adam
당신은 이것에 대한 어떤 대답도 가지고 있습니다 ... –