Цель C: как вы можете повернуть текст для UIButton и UILabel?
Как вы можете повернуть текст для UIButton
и UILabel
? 90 градусов, 180 градусов
спасибо
7 ответов:
[*yourlabelname* setTransform:CGAffineTransformMakeRotation(-M_PI / 2)];
повернутое изображение
изображения пропускающей
Я знаю, что на этот вопрос уже есть много ответов, но я хотел бы дать альтернативный ответ.
поворот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);