Точки UIPageControl не видимы, но рамка видима

Я создал свой первый UIPageControl, и я не вижу его.

Каждый вопрос, который я вижу по этому же вопросу, говорит о цвете точек и о том, что цвет фона одинаков и что проблема - это не моя проблема.

Вот что происходит: 1) Я добавляю UIPageControl к моему представлению, который также содержит прокрутку. Вид прокрутки разбивается на несколько разных видов. UIPageControl добавляется чуть ниже прокрутки, используя автозапуск. 2) Я обновляю текущую страницу управления страницей сразу после загрузки вида, а затем каждый раз, когда прокрутка просматривается. 3) Фон моего представления темно-серый, а точки UIPageControl должны быть белого цвета по умолчанию, но я их не вижу. ОДНАКО, когда я устанавливаю фон UIPageControl на цвет, отличный от прозрачного, я вижу, что рамка элемента управления сидит там, я просто не вижу точек. 4) Я проверил, чтобы убедиться, что свойство currentPage UIPageControl установлено правильно и оно есть.

Должно быть, я делаю глупую ошибку, но я не могу ее найти. Вот мой код:

//создаем UIPageControl

- (void)viewDidLoad
 {
 [super viewDidLoad];

 self.view.backgroundColor = [UIColor colorWithRed:32/255.0f green:68/255.0f blue:90/255.0f alpha:1];

 //...create self.scrollView and add it to the view

 [self createArrayOfViews]; //this is what makes up the pages in the scroll view
 NSInteger pageCount = self.onboardImages.count; //this array is set in create array of views method above

 self.pageControl.currentPage = 0;
 self.pageControl.numberOfPages = pageCount;

 self.pageViews = [[NSMutableArray alloc] init];
 for (NSInteger i = 0; i < pageCount; ++i) {
 [self.pageViews addObject:[NSNull null]];
 }

 self.scrollView = onBoardScrollView;
 [self.view addSubview:self.scrollView];
 [self.view addConstraints:@[onBoardScrollViewWidth, onBoardScrollViewHeight, onBoardScrollViewCenterY, onBoardScrollViewCenterX]];

 UIPageControl *onBoardImagePageControl = [[UIPageControl alloc]init];
 onBoardImagePageControl.translatesAutoresizingMaskIntoConstraints = NO;
 onBoardImagePageControl.backgroundColor = [UIColor clearColor];

 NSLayoutConstraint *onBoardPageControlTop = [NSLayoutConstraint constraintWithItem:onBoardImagePageControl attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:onBoardScrollView attribute:NSLayoutAttributeBottom multiplier:1.0f constant:10.0f];
 NSLayoutConstraint *onBoardPageControlCenterX = [NSLayoutConstraint constraintWithItem:onBoardImagePageControl attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0f constant:0.0f];

 CGSize sizeForPageControl = [onBoardImagePageControl sizeForNumberOfPages:self.onboardImages.count];

 NSLayoutConstraint *onBoardPageControlWidth = [NSLayoutConstraint constraintWithItem:onBoardImagePageControl attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:sizeForPageControl.width];
 NSLayoutConstraint *onBoardPageControlHeight = [NSLayoutConstraint constraintWithItem:onBoardImagePageControl attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:sizeForPageControl.height];

 self.pageControl = onBoardImagePageControl;

 [self.view addSubview:self.pageControl];
 [self.view addConstraints:@[onBoardPageControlTop, onBoardPageControlCenterX, onBoardPageControlHeight, onBoardPageControlWidth]];

 //... add a few other UI elements

 }

//после того, как фреймы были созданы с использованием автозапуска, загружать видимые страницы

- (void)viewDidLayoutSubviews
 {
 [super viewDidLayoutSubviews];
 CGSize pagesScrollViewSize = self.scrollView.frame.size;
 self.scrollView.contentSize = CGSizeMake(pagesScrollViewSize.width * self.onboardImages.count, 250); 
 self.scrollView.delegate = self;
 [self loadVisiblePages];
 }

//код для загрузки видимых страниц

- (void)loadVisiblePages {
 // First, determine which page is currently visible
 CGFloat pageWidth = self.scrollView.frame.size.width;
 NSInteger page = (NSInteger)floor((self.scrollView.contentOffset.x * 2.0f + pageWidth) / (pageWidth * 2.0f));

 // Update the page control
 self.pageControl.currentPage = page;

 // Work out which pages you want to load
 NSInteger firstPage = page - 1;
 NSInteger lastPage = page + 1;

 // Purge anything before the first page
 for (NSInteger i=0; i<firstpage; 0="" i++)="" {="" [self="" purgepage:i];="" }="" load="" pages="" in="" our="" range="" for="" (nsinteger="" i="firstPage;" i<="lastPage;" loadpage:i];="" purge="" anything="" after="" the="" last="" page="" i<self.onboardimages.count;="" -="" (void)loadpage:(nsinteger)page="" if="" (page="" <="" ||="">= self.onboardImages.count) {
 // If it outside the range of what you have to display, then do nothing
 return;
 }

 UIView *pageView = [self.pageViews objectAtIndex:page];
 if ((NSNull*)pageView == [NSNull null]) {

 CGRect frame = self.scrollView.frame;
 frame.origin.x = frame.size.width * page;
 frame.origin.y = -20.0f; //adjust

 //UIImageView *newPageView = [[UIImageView alloc] initWithImage:[self.onboardImages objectAtIndex:page]];
 UIView *newPageView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height)];
 UIView *currentView = [self.onboardImages objectAtIndex:page];
 [newPageView addSubview:currentView];
 currentView.center = newPageView.center;
 newPageView.contentMode = UIViewContentModeScaleAspectFit;
 newPageView.frame = frame;
 [self.scrollView addSubview:newPageView];
 [self.pageViews replaceObjectAtIndex:page withObject:newPageView];
 }
 }
</firstpage;>

//прокрутка Просмотр метода делегата продолжает загружать видимые страницы

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
 // Load the pages that are now on screen
 [self loadVisiblePages];
 }

//удаление невидимых страниц из прокрутки

- (void)purgePage:(NSInteger)page {
 if (page < 0 || page >= self.onboardImages.count) {
 // If it outside the range of what you have to display, then do nothing
 return;
 }

 // Remove a page from the scroll view and reset the container array
 UIView *pageView = [self.pageViews objectAtIndex:page];
 if ((NSNull*)pageView != [NSNull null]) {
 [pageView removeFromSuperview];
 [self.pageViews replaceObjectAtIndex:page withObject:[NSNull null]];
 }
 }

Любая помощь приветствуется.

1 ответ

Порядок кажется неправильным. Вы устанавливаете currentPage и pageCount на объект, который перезаписывается.

//Set here
 self.pageControl.currentPage = 0;
 self.pageControl.numberOfPages = pageCount;

 UIPageControl *onBoardImagePageControl = [[UIPageControl alloc]init];
 onBoardImagePageControl.translatesAutoresizingMaskIntoConstraints = NO;
 onBoardImagePageControl.backgroundColor = [UIColor clearColor];

 //Overwritten here
 self.pageControl = onBoardImagePageControl;

 [self.view addSubview:self.pageControl];

licensed under cc by-sa 3.0 with attribution.