Как я могу использовать UIPageControl для создания нескольких представлений? - PullRequest
10 голосов
/ 29 ноября 2009

Мне нужно использовать UIPagecontrol для моего приложения, и я не знаю, с чего начать. Я новичок, и примеры, которые Apple дает мне, довольно сложны. Все, что мне нужно, это 3 страницы с разными видами для каждой из них.

Ответы [ 4 ]

22 голосов
/ 29 ноября 2009

Вы захотите использовать UIScrollView, а затем, как брат, расположите над ним UIPageControl. Затем поместите каждую из ваших страниц в представление прокрутки и включите подкачку для этого. Таким образом, каждый «щелчок» будет перемещать представление прокрутки на одну страницу.

Теперь назначьте ваш контроллер представления делегатом представления прокрутки, следите за scrollViewDidEndScrollAnimation и используйте contentOffset для определения текущей страницы.

15 голосов
/ 14 сентября 2011

Основываясь на совершенно правильном ответе Бена Готтлиба, я получил то, что хотел. Вот код, который я использовал для этого:

.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];
}
3 голосов
/ 05 октября 2012

Просто добавьте 3 вида в представление прокрутки по горизонтали одно за другим с включенной подкачкой в ​​scrollview и добавьте элемент управления UIPageControl под scrollView, и с помощью обоих методов делегирования scrollview и метода 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];

   }
1 голос
/ 25 октября 2010

Смотрите мой ответ здесь: Является ли UIPageControl бесполезным сам по себе?

для класса многократного использования, инкапсулирующего UIPageControl и UIScrollView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...