2013-11-18 3 views
2

Я создал свой первый UIPageControl, и я не вижу его.UIPageControl Dots Not Visible Но рамка видимая

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

Вот что происходит: 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 

    } 

// после кадры были созданы с помощью autolayout, загрузите видимые страницы

- (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; i++) { 
     [self purgePage:i]; 
     } 

     // Load pages in our range 
     for (NSInteger i=firstPage; i<=lastPage; i++) { 
     [self loadPage:i]; 
     } 

     // Purge anything after the last page 
     for (NSInteger i=lastPage+1; i<self.onboardImages.count; i++) { 
     [self purgePage:i]; 
     } 
    } 

    - (void)loadPage:(NSInteger)page { 
     if (page < 0 || page >= self.onboardImages.count) { 
     // If it's 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]; 
     } 
    } 

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

- (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's 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]; 
+0

глупая ошибка, поскольку я подозревал. спасибо за это. – jac300