目标C:如何为UIButton和UILabel旋转文本?

如何为UIButtonUILabel旋转文本? 90度,180度

谢谢

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

旋转的图像 在这里输入图像描述

前面的图像 在这里输入图像描述

尝试这个:

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

我知道这个问题已经有很多答案,但我想提供一个替代的答案。

您可以通过从UILabel派生一个子类并重写drawRect来旋转标签中的文本,而不是旋转UILabel 。 如果您使用Interface Builder,则可以在Identity Inspector的Custom Class属性中指定此子类而不是UILabel 。 这将允许您用XIB构build您的UI,而不是以编程方式创build标签。 唯一需要注意的是Interface Builder中的文本将水平显示。 但是,它将在应用程序本身中垂直渲染。

 #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 

你这样做,

 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]; 

根据我的经验,UIView框架在应用转换之后被改变,所以这就是我所使用的:

  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)]; 

要么

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