2011-12-21 6 views
0

자, 주제가 스스로 대화합니다 - 사용자 정의 이미지로 기본 스크롤 막대를 변경해야합니다. 자신의 ScrollView 클래스를 작성하거나 스크롤 막대 이미지로 UIView를 만들고 스크롤 할 때 위치를 변경하는 등의 해킹을 사용하지 않아도되는 솔루션을 찾고있었습니다.UIScrollView 스크롤바 사용자 정의하기

내가 좋아하는 한 가지 해결책은 간단한 UIScrollView 범주를 사용하고 UIScrollView의 하위보기로 스크롤 막대에 액세스하는 것이 었습니다. http://leonov.co/2011/04/uiscrollviews-scrollbars-customization/#comment-7909 그러나 어떤 이유로이 방법은 저에게는 적합하지 않습니다. UIScrollView를 만들고 하위 뷰 배열을 가져 오면 수동으로 scrollview에 추가 한 뷰만 표시됩니다. 서브 뷰 배열을 반복하는 스크롤 막대에 액세스 할 수 없습니다. 예를 들어 다음 코드는

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10,10,100,100)]; 
scrollView.userInteractionEnabled = YES;  
scrollView.bounces = NO; 
scrollView.showsHorizontalScrollIndicator = YES; 
NSLog(@"Subviews count is %d", [[scrollView subviews] count]); 

이고 "하위 뷰 수는 0"입니다. 또는 scrollview에 X 요소를 추가하면 "하위 뷰 수는 X입니다." 어떤 아이디어?

답변

1

UIScrollbar 스크롤보기는보기가 스크롤 될 때만 만들어집니다. 뷰가 스크롤을 멈 추면 다시 제거됩니다. 그게 아마도 당신이 당신의 카테고리로 그들을 찾을 수없는 이유 일 것입니다.

스크롤 뷰 서브 뷰 트래버스 코드를 스크롤 뷰 위임자의 scrollViewDidScroll 메소드로 옮길 수 있습니다. 이는 뷰가 스크롤 될 때마다 실행된다는 것을 의미합니다.

나는 이것이 모두 끔찍하고 불필요한 해킹이라고 생각하지만, 스크롤바를 숨기고 위임 메소드를 사용하여 직접 구현하여 사용자 정의 스크롤바를 표시하거나 숨길 때를 결정하는 것이 좋습니다. view 및 contentOffset 속성을 사용하여 위치를 결정합니다.

관련 문제