2009-11-19 5 views
6

iPhone에서 내 기본 응용 프로그램의 UIPageControl을 사용하여 검색을 수행 할 수있는 첫 번째 페이지의 점 대신 확대경 아이콘을 추가하는 방법이 있습니까?UIPageControl 검색 페이지의 점

나는 Google을 시도했지만 비슷한 질문을 찾지 못했지만 Apple 응용 프로그램의 광범위한 기능처럼 보입니다.

아무도 도와 줄 수 있습니까?

답변

7

기본적으로 UIPageControl에는 각 점에 대한 UIView가 포함 된 _indicators 배열이 있습니다. 이 배열은 비공개 속성이므로 혼동하지 않아야합니다. 사용자 정의 아이콘이 필요하면 자신의 페이지 표시기 구현을 수행해야합니다.

편집 : 좀 더 조사한 후에 UIPageControl 하위보기를 대체하여 도트 이미지를 사용자 지정할 수 있습니다. 자세한 내용은 http://www.onidev.com/2009/12/02/customisable-uipagecontrol/을 확인하십시오. 그러나 애플 리뷰어가 그런 일을하는 것에 대해 어떻게 느끼는지 확실하지 않습니다.

+0

감사 : enter image description here

이 코드입니다 :

다음은 결과입니다! 나는 마지막으로 이것이 이렇게되지 않을 것이라고 기대했다. -/ – Denis

+0

UIPageControl의 하위 아이콘 인 검색 아이콘 위에 하위보기를 추가하여 목표를 달성했다 (배치 알고리즘을 찾기 위해 시간을 투자해야했다) . 필요에 따라 작동합니다. 어쨌든, 나는 상자 밖으로이 사용자 화를 허용하지 않기 때문에 애플 측에 작은 비난을 보내야한다. – Denis

+1

우리는 문제없이 제공 한 링크에 설명 된 기술을 사용하여 앱을 제출했습니다. – hennes

1

나는이를 쉽고 합법적으로 (비공개 API없이) 구현하기 위해 UIPageControl 서브 클래스를 만들었습니다. 기본적으로 setNumberOfPages를 덮어 씁니다. UIImageView에 마지막 원 안의 아이콘을 삽입하십시오. 그런 다음 UICageView의 상태를 수정하고 UIPageControl 비공개 API에 의해 자동으로 업데이트되므로 원의 배경색을 지우려면 마지막 페이지가 강조 표시되는지 아닌지를 setCurrentPage : 메소드에서 감지합니다. 답변에 대한

@interface EPCPageControl : UIPageControl 
@property (nonatomic) UIImage *lastPageImage; 
@end 

@implementation EPCPageControl 

- (void)setNumberOfPages:(NSInteger)pages 
{ 
    [super setNumberOfPages:pages]; 

    if (pages > 0) { 

     UIView *indicator = [self.subviews lastObject]; 
     indicator.backgroundColor = [UIColor clearColor]; 

     if (indicator.subviews.count == 0) { 

      UIImageView *icon = [[UIImageView alloc] initWithImage:self.lastPageImage]; 
      icon.alpha = 0.5; 
      icon.tag = 99; 

      [indicator addSubview:icon]; 
     } 
    } 
} 

- (void)setCurrentPage:(NSInteger)page 
{ 
    [super setCurrentPage:page]; 

    if (self.numberOfPages > 1 && self.lastPageImage) { 

     UIView *indicator = [self.subviews lastObject]; 
     indicator.backgroundColor = [UIColor clearColor]; 

     UIImageView *icon = (UIImageView *)[indicator viewWithTag:99]; 
     icon.alpha = (page > 1 && page == self.numberOfPages-1) ? 1.0 : 0.5; 
    } 
} 
+0

감사합니다. 이것은 나를 많이 도왔다. 나는 그것을 다른 접근법보다 훨씬 깨끗하게 발견했습니다! – kekub