开发者

How do I use UIPageControl to create multiple views?

开发者 https://www.devze.com 2022-12-12 15:48 出处:网络
I need to use UIPagecontrol for my application, and I\'m not sure how to get started. I\'m a be开发者_如何学Goginner, and the examples that apple gives me are pretty complicated. All I need are 3 page

I need to use UIPagecontrol for my application, and I'm not sure how to get started. I'm a be开发者_如何学Goginner, and the examples that apple gives me are pretty complicated. All I need are 3 pages with different views for each of them.


You'll want to use a UIScrollView, and then, as a sibling, position the UIPageControl over it. Then put each of your pages into the scroll view and turn paging on for it. This way each 'flick' will move the scroll view one page over.

Now, assign your view controller to be the delegate of the scroll view, and watch for scrollViewDidEndScrollAnimation, and use the contentOffset to determine which page is current.


Based on Ben Gottlieb's quite excellently correct answer there, I got what I wanted. Here's the code I used to accomplish it:

.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];
}


Just add 3 views to the Scroll view Horizontally one after other with paging enabled in scrollview and add a UIPageControl control below the scrollView , And with the help of both delegate methods of scrollview and the Action method of pageview you can achieve basic working of UIPageControl

I used the contentoffset to find the current page

 // 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];

   }


See my answer here: Is UIPageControl Useless By Itself?

for a reusable class encapsulating the UIPageControl and UIScrollView.

0

精彩评论

暂无评论...
验证码 换一张
取 消