Я создал подкласс UIPageControl для легкого и легального достижения этого (без частных API).
По сути, я перезаписал setNumberOfPages: вставить UIImageView с иконкой внутри последнего круга. Затем в методе setCurrentPage: я обнаруживаю, подсвечивается ли последняя страница или нет, чтобы изменить состояние UIImageView, а также очистить цвет фона круга, поскольку он будет автоматически обновляться частными API UIPageControl.
Это результат:
Это код:
@interface EPCPageControl : UIPageControl
@property (nonatomic) UIImage *lastPageImage;
@end
@implementation EPCPageControl
- (void)setNumberOfPages:(NSInteger)pages
{
[super setNumberOfPages:pages];
if (pages > 0) {
UIView *indicator = [self.subviews lastObject];
indicator.backgroundColor = [UIColor clearColor];
if (indicator.subviews.count == 0) {
UIImageView *icon = [[UIImageView alloc] initWithImage:self.lastPageImage];
icon.alpha = 0.5;
icon.tag = 99;
[indicator addSubview:icon];
}
}
}
- (void)setCurrentPage:(NSInteger)page
{
[super setCurrentPage:page];
if (self.numberOfPages > 1 && self.lastPageImage) {
UIView *indicator = [self.subviews lastObject];
indicator.backgroundColor = [UIColor clearColor];
UIImageView *icon = (UIImageView *)[indicator viewWithTag:99];
icon.alpha = (page > 1 && page == self.numberOfPages-1) ? 1.0 : 0.5;
}
}