Как вы можете повернуть текст для UIButton и UILabel в Objective-C?

Как вы можете повернуть текст для UIButton и UILabel? 90 градусов, 180 градусов.

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

повернутое изображение enter image description here

предыдущее изображение enter image description here

166
ответ дан 13 июня '11 в 7:47
источник

Попробуйте следующее:

lbl.transform= CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(270));
32
ответ дан 13 июня '11 в 7:43
источник

Я хотел дать альтернативный ответ.

Вместо поворота UILabel вы можете вращать текст внутри метки, извлекая подкласс из UILabel и переопределяя drawRect. Если вы используете Interface Builder, вы можете указать этот подкласс вместо UILabel в UILabel Custom Class Инспектора идентификации. Это позволит вам создать свой пользовательский интерфейс с XIB вместо программного создания меток. Единственное предостережение в том, что текст в Интерфейсном Разработчике будет отображаться горизонтально. Тем не менее, он будет отображаться вертикально в самом приложении.

#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
11
ответ дан 30 июля '13 в 18:07
источник

Вам это нравится,

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];
4
ответ дан 13 июня '11 в 12:09
источник

По моему опыту, кадр 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);
3
ответ дан 14 апр. '14 в 5:15
источник
lbl.transform=CGAffineTransformMakeRotation(M_PI);

//Go back 

lbl.transform=CGAffineTransformMakeRotation(0);
1
ответ дан 31 янв. '13 в 22:36
источник
//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));
1
ответ дан 11 янв. '13 в 12:14
источник