2010-12-09 46 views
4

我已经搜索并搜索了这个教程,但没有一个是我正在寻找的。我试过苹果的样品,但它只是颜色,我不知道如何使它的意见。我正在寻找的是一个显示页面控制的页面。每次滚动视图页面我都希望它显示与按钮完全不同的视图,很像iPhone的主屏幕。我发现下面的示例代码仅适用于图片,但我想修改为使用单独的视图。请帮忙!谢谢。如何结合UIScrollview和UIPagecontrol显示不同的视图?

- (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)]; 
} 
+0

我不确定为什么你需要分页控制,因为scrollview有一个内置的。如果你想在scrollview中做一个pagecontrol,那么你需要添加一个新的pageview,就像你用imageview – Burf2000 2010-12-09 23:57:37

+2

@ Burf2000:从什么时候'UIScrollView`出现'UIPageControl`? – BoltClock 2010-12-10 03:28:33

回答

4

我前几天正在试验这个。我仍然越来越习惯使用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值彼此。您还必须使用[scrollView setContentSize:CGSizeMake(1200, 1024)];之类的内容来设置UIScrollView的内容大小,以便它知道子视图有多大。

然后,如果您需要控制UIPageControl,则应将其numberOfPages设置为2(对于上面的示例滚动视图)并更改其currentPage属性。你可以通过执行scrollViewDidEndDecelerating:来实现,这是UIScrollViewDelegate中的一种方法。您可以通过检查其值为contentOffset.x来检查滚动视图处于哪个“页面”。

希望这会有所帮助!

0

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

然后用这段代码替换MyViewController.m代码,并且您有页面控制和图像。

欢呼声中,乔丹

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

+0

我正在尝试加载视图INSTEAD的图像。上面的代码已经与图像一起工作。谢谢。 – thenameisnick 2010-12-10 04:33:57

0

//添加的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; 
    } 
0

这里是另一种答案......

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

然后你有你的观点。

干杯

相关问题