objective c - color - Texto vertical en un UIButton horizontal
menu ios (4)
Estoy usando un UIButton vertical en una aplicación de retrato (solo un botón normal que es de ancho 60 y alto 160)
Quiero poner la etiqueta Vetically abajo del botón en vez de cruzarlo.
Cuando uso el siguiente código para rotar la etiqueta
[workPackageButton.titleLabel setTransform:CGAffineTransformMakeRotation(M_PI / 2)];
Gira la etiqueta pero la longitud parece estar limitada por el ancho original, así que obtengo la ... abreviación en el medio. ¿Hay una manera fácil de solucionar esto?
Nunca he hecho esto, pero ¿has intentado crear el botón como un botón horizontal (160w x 60h) y luego girar el botón completo?
Para un recorrido fácil, realice la siguiente configuración para el botón en el inspector de atributos:
- Tipo: personalizado
- Título: Atribuido
Luego, seleccione alineación izquierda / centro / derecha o justificada. No use ''Align Natural''.
Ahora
[workPackageButton.titleLabel setTransform:CGAffineTransformMakeRotation(M_PI / 2)];
funciona como se espera con la etiqueta no abreviada (pero siempre en el centro alineado ...).
Probado con XCode 6.3.
Puede agregar un botón Etiqueta en y girar la etiqueta de la siguiente manera:
UILabel *lbl= [[UILabel alloc] initWithFrame:CGRectMake(button.frame.size.width*.3, button.frame.size.height*.5, button.frame.size.width,button.frame.size.height)];
lbl.transform = CGAffineTransformMakeRotation(M_PI / 2);
lbl.textColor =[UIColor whiteColor];
lbl.backgroundColor =[UIColor clearColor];
[button addSubview:lbl];
Sé que este es un hilo antiguo, pero otra forma de hacerlo es subclase del botón y especificar un tamaño cuadrado para la etiqueta del botón.
@interface RotatingButton : UIButton
@end
@implementation RotatingButton
- (CGRect) titleRectForContentRect:(CGRect)bounds {
CGRect frame = [super titleRectForContentRect:bounds];
frame.origin.y -= (frame.size.width - frame.size.height) / 2;
frame.size.height = frame.size.width;
return frame;
}
@end
La etiqueta de cualquier RotatingButton creado en código o en Storyboard se puede rotar sin que se trunque.
[button.titleLabel setTransform:CGAffineTransformMakeRotation(M_PI / 2)];