Comment faire pivoter le texte pour UIButton
et UILabel
? 90 degrés, 180 degrés.
[*yourlabelname* setTransform:CGAffineTransformMakeRotation(-M_PI / 2)];
image pivotée
image perméable
Essaye ça:
lbl.transform= CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(270));
Je voulais apporter une réponse alternative.
Au lieu de faire pivoter UILabel
, vous pouvez faire pivoter le texte dans l'étiquette en dérivant une sous-classe de UILabel
et en remplaçant drawRect
. Si vous utilisez Interface Builder, vous pouvez spécifier cette sous-classe au lieu de UILabel
dans l'attribut Classe personnalisée de l'inspecteur d'identité. Cela vous permettra de créer votre interface utilisateur avec des XIB, au lieu de créer par programme les étiquettes. La seule mise en garde étant que le texte dans Interface Builder s'affichera horizontalement. Cependant, il sera rendu verticalement dans l'application elle-même.
#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
Tu aimes ça,
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];
D'après mon expérience, le cadre UIView est modifié après l'application de la transformation, c'est donc ce que j'ai utilisé:
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)];
OR
lable.transform= CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(270));