2010-04-20 18 views
8

He visto aplicaciones (por ejemplo, meebo) que tienen diferentes indicadores en UIPageControls en lugar de los círculos blancos predeterminados.cómo cambiar los puntos UIPageControl

¿hay alguna manera fácil de hacerlo? He leído los documentos para UIPageControls y parece que no hay métodos para reemplazar las imágenes.

+0

[** HHPageControl **] (https://github.com/hemangshah/HHPageController) – Hemang

+2

Esto no es una tontería de la otra pregunta: aquí queremos saber cómo cambiar los puntos; el "dupe" vinculado solo quiere cambiar el color. Mi solución se adjunta a la de abajo de Aragón. –

+0

Dado que este "tonto" ya no acepta respuestas, comentaré otra solución. Si solo desea cambiar el tamaño de los puntos, puede usar pagecontrol.transform = CGAffineTransformMakeScale (2, 2); – mvandillen

Respuesta

5

No hay una API pública para cambiar las imágenes. Puede echar un vistazo al this blog post, que describe un método para personalizar el UIPageControl.

21

se puede lograr esto haciendo los siguientes pasos:

1- Crear una clase personalizada que hereda de UIPageControl.

2- Asigne esta clase al UIPageControl requerido que desea cambiar sus puntos.

3- Coloque el siguiente código dentro de su clase UIPageControl personalizada.

Pon esto en el archivo customClass.m:

-(id)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 
    if(self) 
    { 
     activeImage = [UIImage imageNamed:@"active_dot.png"]; 
     inactiveImage = [UIImage imageNamed:@"inactive_dot.png"]; 
    } 
    return self; 
} 

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

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

poner esto en el archivo de customClass.h

{ 
    UIImage* activeImage; 
    UIImage* inactiveImage; 
} 
@property(nonatomic, retain) UIImage* activeImage; 
@property(nonatomic, retain) UIImage* inactiveImage; 

5- Sólo tienes que configurar la página actual de su UIPageControl en la clase que usted coloque el control de página dentro del mismo usando la siguiente línea:

[self.pageControl setCurrentPage:number]; 

recuerde establecer la página actual en el método viewDidLoad() en la vista de ese UIPageControl está dentro de él.

Cuando se carga la vista, se establecerán las imágenes de UIPageControl.

+2

puntos son objetos UIView en iOS7, por lo que es necesario actualizar el código. – Centurion

+0

He actualizado el código de actualización de Aragón: método para admitir iOS 7. Consulte mi respuesta a continuación. –

+0

Maldiciones, las respuestas están cerradas, a pesar de que me gusta más esta solución que la de la página vinculada para la que supuestamente es un engaño. En pocas palabras, subvistas de un PageControl son UIViews, así que estoy inyectando una UIImageView en ellos: –

Cuestiones relacionadas