How do I use UIPageControl to create multiple views?

前端 未结 4 1002
失恋的感觉
失恋的感觉 2020-11-30 06:06

I need to use UIPagecontrol for my application, and I\'m not sure how to get started. I\'m a beginner, and the examples that apple gives me are pretty complicated. All I nee

相关标签:
4条回答
  • 2020-11-30 06:37

    See my answer here: Is UIPageControl Useless By Itself?

    for a reusable class encapsulating the UIPageControl and UIScrollView.

    0 讨论(0)
  • 2020-11-30 06:53

    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];
    
       }
    
    0 讨论(0)
  • 2020-11-30 06:54

    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.

    0 讨论(0)
  • 2020-11-30 07:00

    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];
    }
    
    0 讨论(0)
提交回复
热议问题