如何使用UIPageControl创建多个视图?

时间:2009-11-29 17:36:22

标签: iphone cocoa-touch uikit

我需要在我的应用程序中使用UIPagecontrol,我不知道如何开始。我是初学者,苹果给我的例子非常复杂。我只需要3页,每页都有不同的视图。

4 个答案:

答案 0 :(得分:22)

您将要使用UIScrollView,然后,作为兄弟,将UIPageControl放在它上面。然后将每个页面放入滚动视图并为其打开分页。这样,每次“轻弹”都会将滚动视图移动一页。

现在,将视图控制器指定为滚动视图的委托,并注意scrollViewDidEndScrollAnimation,并使用contentOffset确定哪个页面是最新的。

答案 1 :(得分:15)

基于Ben Gottlieb在那里非常正确的答案,我得到了我想要的东西。这是我用来完成它的代码:

·H

@interface MyViewController : UIViewController <UIScrollViewDelegate> {
}
@property (nonatomic, retain) UIPageControl *helpPageCon;

的.m

@synthesize helpPageCon;

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    CGRect frame = [[UIScreen mainScreen] applicationFrame];
    float roundedValue = round(scrollView.contentOffset.x / frame.size.width);
    self.helpPageCon.currentPage = roundedValue;    
}

- (void)viewDidLoad
{
    UIScrollView *scrollView = [[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height-50)] autorelease];
    scrollView.contentSize = CGSizeMake(frame.size.width*5, frame.size.height-50);
    [scrollView setPagingEnabled:YES];
    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.delegate = self;
    [self.view addSubview:scrollView];

    CGRect frame = [[UIScreen mainScreen] applicationFrame];
    self.helpPageCon = [[[UIPageControl alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, 50)] autorelease];
    self.helpPageCon.center = CGPointMake(frame.size.width/2, frame.size.height-75);
    self.helpPageCon.numberOfPages = 5;
    [self.view addSubview:self.helpPageCon];
}
- (void)dealloc
{
    [super dealloc];
    [helpPageCon release];
}

答案 2 :(得分:3)

只需向滚动视图中水平添加3个视图,在scrollview中启用分页,并在scrollView下添加UIPageControl控件,并在scrollview的delegate方法和pageview的Action方法的帮助下实现基本工作UIPageControl

我使用contentoffset查找当前页面

 // scrollview delegate

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

    CGFloat pageWidth = mainScroll.frame.size.width;
    int page = floor((mainScroll.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    pageControl.currentPage=page;

  }

    // page view action method

  - (IBAction)pageControlInteracted:(UIPageControl *)sender {
      NSLog(@"%d",sender.currentPage);
      CGRect frame = mainScroll.frame;
      frame.origin.x = frame.size.width * sender.currentPage;
      frame.origin.y = 0;
      [mainScroll scrollRectToVisible:frame animated:YES];

   }

答案 3 :(得分:1)

请在此处查看我的回答:Is UIPageControl Useless By Itself?

用于封装UIPageControl和UIScrollView的可重用类。