【发布时间】:2011-09-13 16:18:00
【问题描述】:
如何旋转UIButton 和UILabel 的文本? 90度,180度。
【问题讨论】:
-
您只想旋转文本或整个标签/按钮?
标签: ios objective-c uibutton rotation uilabel
如何旋转UIButton 和UILabel 的文本? 90度,180度。
【问题讨论】:
标签: ios objective-c uibutton rotation uilabel
我想提供另一种回应。
您可以通过从UILabel 派生一个子类并覆盖drawRect 来旋转标签内 中的文本,而不是旋转UILabel。如果您使用的是 Interface Builder,则可以在 Identity Inspector 的 Custom Class 属性中指定此子类而不是 UILabel。这将允许您使用 XIB 构建您的 UI,而不是以编程方式创建标签。唯一需要注意的是 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
【讨论】:
//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));
【讨论】:
根据我的经验,应用转换后 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);
【讨论】:
试试这个:
lbl.transform= CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(270));
【讨论】:
你喜欢这样,
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];
【讨论】:
[*yourlabelname* setTransform:CGAffineTransformMakeRotation(-M_PI / 2)];
旋转图像
上一张图片
【讨论】:
M_PI 一起,您可以访问M_PI_2 (pi / 2) 和M_PI_4 (pi / 4),因此您可以使用它们。