2011-01-10 3 views
2

하이 모든 ... 나는 uipagecontroller 표시 (점) 색상을 변경하려면uipagecontrol 표시 (점) 문제

...이를 위해 나는 아래 단계를하고 있어요.

는이 방법 (void) setCurrentPage:(NSInteger)page

2 .- (void) setNumberOfPages:(NSInteger)pages

- (void) setCurrentPage:(NSInteger)page 
{ 
    NSLog(@"setCurrentPage"); 
    [super setCurrentPage:page]; 
    NSString* imgActive = [[NSBundle mainBundle] pathForResource:@"activeimage" ofType:@"png"]; 
    NSString* imgInactive = [[NSBundle mainBundle] pathForResource:@"inactive" ofType:@"png"]; 
    for (NSUInteger subviewIndex = 0; subviewIndex < [self.subviews count]; subviewIndex++) 
    { 
     UIImageView* subview= [self.subviews objectAtIndex:subviewIndex]; 

     if (subviewIndex == page) 
      [subview setImage:[UIImage imageWithContentsOfFile:imgActive]];   
     else 
      [subview setImage:[UIImage imageWithContentsOfFile:imgInactive]];   

     subview.frame = CGRectMake(subview.frame.origin.x, subview.frame.origin.y, 10,10); 
    } 
} 


- (void) setNumberOfPages:(NSInteger)pages 
{ 
    NSLog(@"setNumberOfPages"); 
    [super setNumberOfPages:pages]; 
    NSString* img = [[NSBundle mainBundle] pathForResource:@"inactive" ofType:@"png"]; 
    for (NSUInteger subviewIndex = 0; subviewIndex < [self.subviews count]; subviewIndex++) 
    { 
     UIImageView* subview= [self.subviews objectAtIndex:subviewIndex];    
     [subview setImage:[UIImage imageWithContentsOfFile:img]];   
     subview.frame = CGRectMake(subview.frame.origin.x, subview.frame.origin.y, 10,10); 
    } 
} 

1 .-

이미 내가 pagecontrol하고있는 ScrollView 하나의보기에 봉착와 PageControl라는 이름으로 새 클래스를 만듭니다 ... 여기는 펜촉에서 uipagecontroller를 선택하고 ID 검사기를 선택하고 이미지를 스 와이프하는 동안 색상을 변경하기 위해 작동하는 클래스 이름 PageControl (새로 만든 클래스 2 개를 선택)을 선택하지만 작동하지 않습니다. 다음 페이지로 이동하는 pagecontrol ...

내가 포함 할 갈까요 모르는

또는 무엇 내가 뭘 잘못 클릭에 대해 ... ... 이렇게 저를 도와주세요

고맙습니다 ...

답변

2

점의 클릭으로 페이지 스크롤을 사용하려면 먼저 xib 파일의 "value changed"속성을 코드에서 설정 한 작업과 연결해야합니다.

내 프로젝트 중 하나에서 동일한 기능을 구현 했으므로 확실히 작동합니다.

- (IBAction)changePage:(id)sender { 
int page = pageControl.currentPage; 
CGFloat pageWidth = scrollView.frame.size.width; 

pageWidth = scrollView.frame.size.width; 
pageControl.currentPage = page; 

CGRect frame = scrollView.frame; 
frame.origin.x = frame.size.width * page; 
frame.origin.y = 0; 
[scrollView scrollRectToVisible:frame animated:YES]; 

// Set the boolean used when scrolls originate from the UIPageControl. See scrollViewDidScroll: above. 

} 

건배

+0

하이 디트 야 코딩 해피

... 난 이미 내 preview.m class.preview.m 클래스 XIB에서이 코드를 작성했습니다 내가 "등의 페이지 컨트롤과 changePage 액션 메소드를 연결하고있어 pagecontrol있다 value Changed "... 페이지 컨트롤 표시기를 변경하기 위해 새로 생성 된 클래스는 PageControl.open이라 불리며 xib에서 pagecontrol을 호출하고 클래스 이름을 PageControl ie (새로 만든 클래스 이름)으로 선택합니다. 페이지를 스크롤하는 동안 점 색상을 변경합니다. 시간은 pagecontrol를 클릭하여 다음 페이지로 이동합니다. 일반 표시기 (컬러 없음)를 보여줍니다 ... 빠른 답장을 보내 주셔서 감사합니다 ... – kanmani

+1

이 링크는 http : //www.onidev. co.kr/2009/12/02/customizable-uipagecontrol/ – Aditya

+0

예,이 링크는 저에게 더 많은 도움이됩니다 ...감사합니다 Aditya – kanmani

0

귀하의 위의 코드는 아이폰 OS 7.I에서 충돌되어이 문제에 대한 해결책을 발견했다. 나는 그것이 방법이 아니라는 것을 알고 있지만 iOS 8이 시장에 출시 될 때까지 작동한다는 것을 확신합니다. 충돌에 대한

이유 : 아이폰 OS 7

[self.subViews objectAtIndex: i] 반환하는 대신 UIImageViewUIView 및 setImage는 UIView의 앱 충돌의 재산이 아니다. 이 문제를 해결하려면 다음 코드를 사용하십시오.

하위 뷰가 UIView (iOS7)인지 UIImageView (iOS6 이하)인지 확인하십시오. 그리고 그것이 UIView라면 나는 그 뷰와 서브 우퍼에 UIImageView을 추가 할 것입니다.

-(void) updateDots 
{ 
    for (int i = 0; i < [self.subviews count]; i++) 
    { 
     UIImageView * dot = [self imageViewForSubview: [self.subviews objectAtIndex: i]]; 
     if (i == self.currentPage) dot.image = activeImage; 
     else dot.image = inactiveImage; 
    } 
} 
- (UIImageView *) imageViewForSubview: (UIView *) view 
{ 
    UIImageView * dot = nil; 
    if ([view isKindOfClass: [UIView class]]) 
    { 
     for (UIView* subview in view.subviews) 
     { 
      if ([subview isKindOfClass:[UIImageView class]]) 
      { 
       dot = (UIImageView *)subview; 
       break; 
      } 
     } 
     if (dot == nil) 
     { 
      dot = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, view.frame.size.width, view.frame.size.height)]; 
      [view addSubview:dot]; 
     } 
    } 
    else 
    { 
     dot = (UIImageView *) view; 
    } 

    return dot; 
} 

희망 사항은 iOS7에서도 마찬가지입니다. Anypone이 최적의 솔루션을 찾으면 의견을 말하십시오. :)