2012-03-06 2 views
1

UIScrollView에 세 개의 이미지 (현재 두 번째 UIImages와 UIColor가 아직 세 번째 그래픽을받지 못했음)가 표시되어 있는데 UIPageControl을 추가하려고했지만 몇 가지 문제가 있습니다.UIScrollView 위에 UIPageControl 넣기

UIPageControl은 투명 배경 (IB에서 충분히 쉽다)을 가져야하며, UIScrollView 위에 앉아 사용자가 어느 페이지에 있는지 표시해야합니다.

첫 번째 문제는 UIPageControl이 UIScrollView 뒤에 있다는 점입니다. 두 번째 문제는 첫 번째 페이지로 이동하여 두 번째 시도 (두 번째 텍스트로 나가면 텍스트 뒤에 표시됨)로 이동한다는 것입니다. 세 번째 문제는 사용자가 어떤 페이지를 표시하는지 알 수 없다는 것입니다 (두 번째 문제로 인해 볼 수는 없지만).

저는 XCode에 상당히 익숙하지만 그래서 나는 완전한 아마추어가 아니에요. 나는 잠시 동안 이것에 대한 해결책을 찾고 있었고 다른 것을 찾을 수없는 것처럼 보였다. 죄송합니다.이 질문이 전에 나오면 저를 찾지 못할 것입니다!

HomeViewController.h

#import <UIKit/UIKit.h> 

@interface HomeViewController : UIViewController { 
UIScrollView *scrollView; 
UIPageControl *pageControl; 
} 

@property (nonatomic, retain) IBOutlet UIScrollView *scrollView; 
@property (nonatomic, retain) IBOutlet UIPageControl *pageControl; 

@end 

HomeViewController.m

#import "HomeViewController.h" 

@implementation HomeViewController 

@synthesize scrollView; 
@synthesize pageControl; 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

NSArray *colors = [NSArray arrayWithObjects:[UIColor colorWithPatternImage:[UIImage  imageNamed:@"SuperflyPoster_1.jpg"]], [UIColor colorWithPatternImage:[UIImage imageNamed:@"SuperflyPoster_2.jpg"]], [UIColor blueColor], nil]; 
for (int i = 0; i < colors.count; i++) { 
    CGRect frame = scrollView.frame; 
    frame.origin.x = frame.size.width *i; 
    frame.origin.y = 0; 
    frame.size = self.scrollView.frame.size; 

    UIView *subview = [[UIView alloc] initWithFrame:frame]; 
    subview.backgroundColor = [colors objectAtIndex:i]; 
    [self.scrollView addSubview:subview]; 
    [subview release]; 
} 

self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width *colors.count, self.scrollView.frame.size.height); 
} 

- (void)scrollViewDidScroll:(UIScrollView *)sender 
{ 
// Update the page when more than 50% of the previous/next page is visible 
CGFloat pageWidth = self.scrollView.frame.size.width; 
int page = floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
self.pageControl.currentPage = page; 
} 


- (void)didReceiveMemoryWarning { 
// Releases the view if it doesn't have a superview. 
[super didReceiveMemoryWarning]; 

// Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
// Release any retained subviews of the main view. 
// e.g. self.myOutlet = nil; 
self.scrollView = nil; 
} 

- (void)dealloc { 
[pageControl release]; 
[scrollView release]; 
[super dealloc]; 
} 

@end 

많은 감사 :

여기 내 코드입니다.

답변

1

이 게시물은 상당히 오래되었지만 여기에서 도움을 요청하고 나중에 문제를 해결 했으므로 다른 사람에게 도움이 될만한 대답이라고 생각합니다.

문제 1 : 첫 번째 및 두 번째 문제의 원인은 UIPageControl을 스토리 보드로 드래그 할 때 스크롤 뷰에 배치하여 스크롤보기의 하위보기가되기 때문입니다. 그리고 스크롤 뷰에 Image 나 다른 내용을 추가하면 새로운 내용이 UIPageControl을 덮고 pageControl이 스크롤 뷰의 하위 뷰이므로 내용과 함께 스크롤하고 화면을 스크롤합니다.

해결 방법 1 & 2 : UIPageControl 및 ScrollView를 하위 뷰와 동일한 수준으로 컨트롤러의 기본보기에 배치해야하며 UIPageControl이 UIScrollview 아래 '문서 개요'에 나타나야합니다. 보기의 정면). 이렇게하려면 UIPageControl을 먼저 드래그 한 다음 scrollview에서 드래그하고 scrollview의 크기를 조정 한 다음 '문서 개요'에서 위치를 전환 할 수 있습니다.

문제 3 : pageControl의 페이지를 올바르게 설정 한 것 같습니다. 페이지 제어를 볼 수 있다면 이미 작동했을 수도 있습니다. scrollView의 enable paging을 YES로 설정해야합니다.

2
  • 문제 1 : 당신이 당신의 의견을 배치하기 위해서 스토리 보드를 사용하는 경우 추가 addSubview를 사용하는 경우 당신이 당신의 pagecontrol보기 전에있는 ScrollView를 넣어 때문에, 그것은 그 처음 pagecontrol를 추가하기 때문에, 두 번째있는 ScrollView입니다이다.
  • 문제 1 해결 방법 : 스크롤 뷰를 첫 번째로, 페이지 뷰를 두 번째로 놓습니다.
  • 문제 2 : pagecontrolview가 scrollview의 하위보기이므로 잘못된 것입니다. scrollview와 pagecrontrolview는 같은 레이어에 있어야합니다.
  • 문제 2 해결책 : 같은 레이어에 만들어 두십시오.
  • 문제 3, 내 코드를 볼 수 있습니다.

감사합니다. 귀하가 만나는 문제는 내가 만난 모든 문제입니다. 그래서, 나는 그것을 간단하게하기 위해 PagedImageScrollView을 작성한 어쩌면 당신은 또한 그것에서 배울 수 있습니다, 여기에 도움이되는 링크


PagedImageScrollView


희망입니다. 재미있게 보내십시오.

관련 문제