Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Objective-C中旋转UIButton和UILabel的文本?_Ios_Objective C_Uibutton_Rotation_Uilabel - Fatal编程技术网

Ios 如何在Objective-C中旋转UIButton和UILabel的文本?

Ios 如何在Objective-C中旋转UIButton和UILabel的文本?,ios,objective-c,uibutton,rotation,uilabel,Ios,Objective C,Uibutton,Rotation,Uilabel,如何旋转ui按钮和ui标签的文本?90度,180度。试试这个: lbl.transform= CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(270)); 旋转图像 透水图像 你确实喜欢这样 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 50, 70)]; label.numberOfLines = 2; label.text = @"text";

如何旋转
ui按钮
ui标签
的文本?90度,180度。

试试这个:

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


我想提供另一种回应

您可以通过从
UILabel
派生子类并重写
drawRect
来旋转标签内的文本,而不是旋转
UILabel
。如果使用的是Interface Builder,则可以在Identity Inspector的自定义类属性中指定此子类,而不是
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

根据我的经验,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);

你只是想旋转文本或整个标签/按钮?我可以使用CgaffinetTransformMakeRotation for NSString吗?也许组合起来是有意义的…但也许有什么想法可以实现它?出于某种奇怪的原因,当我使用M#PI/4时,标签消失了。#定义度到弧度(x)(M#PI*x/180.0)CgaffinetTransformMakeRotation(-M#PI#2);只是一个小评论;与
M_PI
一起,您可以访问
M_PI_2
PI/2
)和
M_PI_4
PI/4
)以便使用它们。尝试在按钮内旋转标签将导致标签非常短,例如,如果按钮的“宽度”与标签的“高度”相同(旋转时)。将其他答案中给出的变换应用于UIButton而不是按钮的标签将旋转按钮和标签。
lable.transform= CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(270));
lbl.transform=CGAffineTransformMakeRotation(M_PI);

//Go back 

lbl.transform=CGAffineTransformMakeRotation(0);
#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 *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);