Есть ли способ изменить цвет точек индикатора страницы

Я новичок в программировании на iphone, я пытаюсь разработать приложение, использующее управление страницами. Цвет фона моего вида белый, а по умолчанию контроллеры страниц - белый, что делает управление страницами невидимым на мой взгляд, поэтому я изменил фоновый цвет элемента управления страницы, чтобы сделать его видимым. Теперь вид кажется исправленным и плохим. Есть ли способ изменить только цвет точек для управления страницей?

Заранее спасибо

28
задан Reinstate Monica - M. Schröder 14 May 2013 в 15:05
поделиться

1 ответ

Мы настроили UIPageControl для использования пользовательского изображения для индикатора страницы, я перечислил внутренности этого класса ниже .. .

GrayPageControl.h

@interface GrayPageControl : UIPageControl
{
    UIImage* activeImage;
    UIImage* inactiveImage;
}

GrayPageControl.m

-(id) initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];

    activeImage = [[UIImage imageNamed:@"active_page_image.png"] retain];
    inactiveImage = [[UIImage imageNamed:@"inactive_page_image.png"] retain];

    return self;
}

-(void) updateDots
{
    for (int i = 0; i < [self.subviews count]; i++)
    {
        UIImageView* dot = [self.subviews objectAtIndex:i];
        if (i == self.currentPage) dot.image = activeImage;
        else dot.image = inactiveImage;
    }
}

-(void) setCurrentPage:(NSInteger)page
{
    [super setCurrentPage:page];
    [self updateDots];
}

Затем в контроллере представления мы просто используем его как обычный UIPageControl

IBOutlet GrayPageControl* PageIndicator;

Редактировать:

В контроллере представления с GrayPageControl у меня есть IBAction, который связан с событием GrayPageControl.ValueChanged.

-(IBAction) pageChanged:(id)sender
{
    int page = PageIndicator.currentPage;

    // update the scroll view to the appropriate page
    CGRect frame = ImagesScroller.frame;
    frame.origin.x = frame.size.width * page;
    frame.origin.y = 0;
    [ImagesScroller scrollRectToVisible:frame animated:YES];
}
52
ответ дан 28 November 2019 в 02:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: