2010-05-17 6 views
2

UIScrollView (화면의 전체 너비)에 UIImage (이미지 너비가> 320px)가 있고 페이징 효과를 원합니다.UIScrollView 사용자 정의 페이징 거리

내가 찾은 모든 자습서/예제는 여러 UIImages 또는 UIVIews로 수행하는 방법을 설명하지만 UIScrollView에는 1 개의 UIImage 만 있습니다. 내 목표는 '테이프 대책'과 같은 효과를 창출하는 것입니다. 그리고 scrollview는 테이프의 모든 마커에서 '페이지'해야합니까?

UIScrollView의 너비보다 적은 거리에서 페이징을 수행하려면 어떻게해야합니까?!

답변

1

비행 중에 수학을하는 것보다 깨끗한 해결책을 생각할 수 없습니다. 원하는 페이지 길이가 실제 페이지와 관련하여 유지되도록 UIImage를 "슬라이드"하는 것보다 100px면. 그래서 유사 뭔가 : 나는 전혀이 테스트를하지 않은

- (void)layoutSubviews { 
    int numPages = ceilf(myImageView.bounds.size.width/pageWidth); 
    CGRect visibleBounds = [self bounds]; 
    CGFloat start = visibleBounds.origin.x; 
    CGFloat offset = start/pageWidth; 
    myImageView.frame = CGRectMake(offset, myImageView.frame.origin.y, 
            myImageView.frame.size.width, 
            myImageView.frame.size.height); 
} 

그러나 희망이 작업 트랙에 당신을 가져옵니다

CGFloat pageWidth = 100; 
int numPages = ceilf(myImageView.bounds.size.width/pageWidth); 
scrollView.contentSize = CGSizeMake(numPages * scrollView.bounds.size.width, 
            scrollView.bounds.size.height); 

그런 다음 스크롤 뷰의 layoutSubviews 방법을 서브 클래스입니다. 이 의 경우 스크롤 할 때마다 이미지를 이동하여 각 "페이지"가 ​​이미지 100px 만 이동하도록합니다.

+0

감사합니다 MrHen! ... 단지 후속 질문입니다 ... 레이아웃에서 Subvies 메소드, numPages의 목적은 무엇입니까? 건배! – alex25

+0

음 ... 기억이 안납니다. 분명히 더 이상 아무것도하지 않는 것처럼 그 라인을 꺼내는 것을 잊어 버렸을 것입니다. :) – MrHen

관련 문제