Objetivo C: Como você pode rotacionar texto para UIButton e UILabel?

Como você pode girar o texto para UIButton e UILabel ? 90 graus, 180 graus

obrigado

 [*yourlabelname* setTransform:CGAffineTransformMakeRotation(-M_PI / 2)]; 

imagem girada insira a descrição da imagem aqui

imagem permeável insira a descrição da imagem aqui

Tente isto:

 lbl.transform= CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(270)); 

Eu sei que esta pergunta já tem muitas respostas, mas eu queria fornecer uma resposta alternativa.

Em vez de girar o UILabel , você pode girar o texto dentro do label derivando uma subclass de UILabel e substituindo o drawRect . Se você estiver usando o Interface Builder, poderá especificar essa subclass em vez de UILabel no atributo Custom Class do Identity Inspector. Isso permitirá que você crie sua interface do usuário com XIBs, em vez de criar programaticamente os labels. A única ressalva é que o texto no Interface Builder será exibido horizontalmente. No entanto, ele será processado verticalmente no próprio aplicativo.

 #import "RotatedLabel.h" @implementation RotatedLabel - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); CGContextRotateCTM(context, -(M_PI/2)); UIFont* systemFont17 = [UIFont systemFontOfSize:17.0]; CGSize textSize = [self.text sizeWithFont:systemFont17]; CGFloat middle = (self.bounds.size.width - textSize.height) / 2; [self.text drawAtPoint:CGPointMake(-self.bounds.size.height, middle) withFont:systemFont17]; CGContextRestoreGState(context); } @end 

Você gosta disso

 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 50, 70)]; label.numberOfLines = 2; label.text = @"text"; label.backgroundColor = [UIColor clearColor]; label.textColor = [UIColor whiteColor]; label.highlightedTextColor = [UIColor blackColor]; label.textAlignment = UITextAlignmentLeft; label.font = [UIFont systemFontOfSize:12]; //rotate label in 45 degrees label.transform = CGAffineTransformMakeRotation( M_PI/4 ); [self addSubview:label]; [label release]; 

Na minha experiência, o quadro UIView é alterado depois de aplicar a transformação, então é isso que eu usei:

  UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(x, 0, 28, 159)]; l.textAlignment = NSTextAlignmentRight; l.text = @"Hello!"; [_viewXAxisLabels addSubview:l]; [l setTransform:CGAffineTransformMakeRotation(-M_PI / 2)]; l.frame = CGRectMake(x, 0, 28, 159); 
 lbl.transform=CGAffineTransformMakeRotation(M_PI); //Go back lbl.transform=CGAffineTransformMakeRotation(0); 
 //Right To Left lable.transform = CGAffineTransformMakeRotation (3.14/2); //Left To Right [lable setTransform:CGAffineTransformMakeRotation(-M_PI / 2)]; 

OU

 lable.transform= CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(270));