如何结合UIScrollview和UIPagecontrol显示不同的视图?

我已经search和search这个教程,但没有一个是我正在寻找。 我试过苹果的样品,但它只是颜色,我不知道如何使它的意见。 我正在寻找的是一个页面显示页面控制的页面。 每次滚动视图页面我想要显示一个完全不同的视图与button,很像iPhone的主屏幕。 我发现下面的示例代码只与图像很好地工作,但我想修改为单独的视图。 请帮忙! 谢谢。

- (void)setupPage { scrollView.delegate = self; [self.scrollView setBackgroundColor:[UIColor clearColor]]; [scrollView setCanCancelContentTouches:NO]; scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; scrollView.clipsToBounds = YES; scrollView.scrollEnabled = YES; scrollView.pagingEnabled = YES; NSUInteger nimages = 0; CGFloat cx = 0; for (; ; nimages++) { NSString *imageName = [NSString stringWithFormat:@"image%d.jpg", (nimages + 1)]; UIImage *image = [UIImage imageNamed:imageName]; if (image == nil) { break; } UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; CGRect rect = imageView.frame; rect.size.height = image.size.height; rect.size.width = image.size.width; rect.origin.x = ((scrollView.frame.size.width - image.size.width) / 2) + cx; rect.origin.y = ((scrollView.frame.size.height - image.size.height) / 2); imageView.frame = rect; [scrollView addSubview:imageView]; [imageView release]; cx += scrollView.frame.size.width; } self.pageControl.numberOfPages = nimages; [scrollView setContentSize:CGSizeMake(cx, [scrollView bounds].size.height)]; } 

我前几天正在做这个试验。 我仍然习惯于使用UIScrollView但这里是如何添加视图到你的UIScrollView

 UIView *blueView = [[UIView alloc] init]; blueView.frame = CGRectMake(100, 0, 500, 1024); blueView.backgroundColor = [UIColor colorWithRed:164.0/256 green:176.0/256 blue:224.0/256 alpha:1]; [scrollView addSubview:blueView]; [blueView release]; UIView *orangeView = [[UIView alloc] init]; orangeView.frame = CGRectMake(700, 0, 500, 1024); orangeView.backgroundColor = [UIColor colorWithRed:252.0/256 green:196.0/256 blue:131.1/256 alpha:1]; [scrollView addSubview:orangeView]; [orangeView release]; 

请注意,我正在设置每个视图的frame.origin中的x值,以使它们彼此相邻。 你还必须设置UIScrollView的内容大小,如[scrollView setContentSize:CGSizeMake(1200, 1024)]; 所以它知道它的子视图有多大。

然后,如果你需要控制一个UIPageControl ,你可以设置它的numberOfPages为2(例如上面的scrollview)并改变它的currentPage属性。 你可以通过实现scrollViewDidEndDecelerating:来做到这一点,这是UIScrollViewDelegate一个方法。 您可以通过检查其contentOffset.x值来检查滚动视图所在的“页面”。

希望这可以帮助!

这是带有图像的Apple PageControl代码。 要使用,只需拖动您的图像到项目。 默认的图像是image1.jpg,image2.jpg等。如果你需要PNG,只要将扩展名改为.png即可。

然后用这个代码replaceMyViewController.m代码,并且你有页面控制和图像。

干杯,约旦

http://pastebin.com/raw.php?i=c3hS29sC

//添加UIView到PageControl的例子

  - (id)initWithPageNumber:(int)page { UIScreen *screen = [UIScreen mainScreen]; CGRect frame = [screen applicationFrame]; frame.origin.y=0; if (self = [super initWithNibName:@"MyView" bundle:nil]) { UIView *view = [[UIView alloc] initWithFrame:frame]; [self.view addSubview:view]; // Add whatever you want to the view here. [view release]; pageNumber = page; } return self; } 

这是另一个答案

 NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"Views" owner:self options:nil]; infoView = [nibViews objectAtIndex:0]; [self.view addSubview:infoView]; 

那么你有你的看法。

干杯