Necesito generar un botón personalizado a través del código, así es como lo estoy haciendo actualmente.Haciendo un botón personalizado usando UIView o reemplazando UIButton?
-(void) initialiseButtons
{
int ypos = playerImage.frame.origin.y + playerImage.frame.size.height + 8;
for(int i=0; i<totalButtons; i++)
{
UIButton *newButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[newButton setFrame:CGRectMake(20, ypos, 220, 30)];
newButton.tag = 10 + i;
[newButton addTarget:self action:@selector(statTapped:) forControlEvents:UIControlEventTouchUpInside];
[self.frontView addSubview:newButton];
ypos += 30 + 7;
}
}
Esto crea los botones en blanco a la perfección a través de código, les da una etiqueta y asigna una función de devolución de llamada en touchUpInside.
El botón personalizado debe poder mostrar una imagen cuando se presiona hacia abajo. Necesita poder dibujar 2 pedazos de texto. 1 alineado al lado izquierdo del botón y 1 alineado al lado derecho del botón.
Mi jefe sugirió en lugar de botones que use una Vista. No entiendo cómo funcionará esto. Cuando empiece a pensar en ello, creo que requeriría tener un viewcontroller dedicado a los botones. ¿Y algún método de dibujar? Suena complicado y no entiendo cómo se puede hacer.
¿Hay un método más simple haciendo que una clase personalizada anule UIButton? Hice una clase de prueba simple antes, pero no se dibujó nada en las ubicaciones de los botones cuando las usé en lugar de la clase UIButton Normal. Esperaba ver el buttonUp.png dibujado.
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface CardButton : UIButton {
}
@end
#import "CardButton.h"
#import <UIKit/UIKit.h>
@implementation CardButton
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
[self setImage:[UIImage imageNamed:@"buttonUp.png"] forStates:UIControlStateNormal];
self.adjustsImageWhenHighlighted = YES;
}
return self;
}
@end
¿Alguien me puede dar algunos consejos sobre esto? Estoy bastante bloqueado en este momento. He estado leyendo algunos otros hilos relacionados con los botones, pero nada que haya dejado claro en mi cabeza cómo abordar el problema
CAnt averiguar cómo hacer esto. Lo dejaré 24 horas y veré si tiene más sentido cuando regrese a él. Gracias por la ayuda que Eiko apreció :) –
¿Puede darnos más información sobre esta cosa de la fábrica? –
@Lechazar Todorov Simplemente haga un método de clase (estático) * en algún lugar * que cree y configure el botón. De esta forma, puedes crear tantos botones de este tipo como quieras, pero no tienes que jugar con la desalentada subclasificación. – Eiko