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


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

спасибо

7 66

7 ответов:

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

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

изображения пропускающей enter image description here

попробуйте это:

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

Я знаю, что на этот вопрос уже есть много ответов, но я хотел бы дать альтернативный ответ.

поворот UILabel, вы можете повернуть текст внутри метка, производная подкласса от UILabel и переопределить drawRect. Если вы используете Interface Builder, вы можете указать этот подкласс вместо UILabel в атрибуте пользовательского класса инспектора удостоверений. Это позволит вам построить свой пользовательский интерфейс с помощью XIBs, а не программное создание меток. Единственное предостережение заключается в том, что текст в 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));