Как вы можете повернуть текст для UIButton
и UILabel
? 90 градусов, 180 градусов.
Как вы можете повернуть текст для UIButton и UILabel в Objective-C?
Ответ 1
[*yourlabelname* setTransform:CGAffineTransformMakeRotation(-M_PI / 2)];
повернутое изображение
предыдущее изображение
Ответ 2
Попробуйте следующее:
lbl.transform= CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(270));
Ответ 3
Я хотел дать альтернативный ответ.
Вместо поворота 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
Ответ 4
Вам это нравится,
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];
Ответ 5
По моему опыту, кадр 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);
Ответ 6
//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));
Ответ 7
lbl.transform=CGAffineTransformMakeRotation(M_PI);
//Go back
lbl.transform=CGAffineTransformMakeRotation(0);