UITextView不会旋转

时间:2016-03-27 16:14:29

标签: ios xcode uiimage uitextview

我在UIImage上添加了一个文本标签。我成功地添加了文本标签,但我想将其旋转90度以使其垂直。

这是我的代码:

SingleOrDefaultAsync

我尝试使用以下方法转换文本视图:

UIGraphicsBeginImageContext(image.size);
[image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)];

UITextView *myText = [[UITextView alloc] init];
myText.font = [UIFont fontWithName:@"font-name" size:300.0f];
myText.textColor = [UIColor whiteColor];
myText.text = @"Text";
myText.backgroundColor = [UIColor clearColor];
[myText setTransform:CGAffineTransformMakeRotation(-90* M_PI/180)];

CGSize maximumLabelSize = CGSizeMake(image.size.width,image.size.height);
CGSize expectedLabelSize = [myText.text sizeWithFont:myText.font
                                   constrainedToSize:maximumLabelSize
                                       lineBreakMode:UILineBreakModeWordWrap];


myText.frame = CGRectMake(image.size.width - expectedLabelSize.width, image.size.height - expectedLabelSize.height, image.size.width, image.size.height);

[[UIColor whiteColor] set];
[myText.text drawInRect:myText.frame withFont:myText.font];
UIImage *myNewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

以及:

[myText setTransform:CGAffineTransformMakeRotation(-90* M_PI/180)];

但它根本不起作用,没有任何反应。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您正在使用[myText.text drawInRect:myText.frame withFont:myText.font];绘制文字,但是您正在旋转视图以获取文本。如果你想以这种方式绘制一个字符串,你需要旋转上下文然后绘制。例如:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextRotateCTM(context,-M_PI / 2);
[myText.text drawInRect:myText.frame withFont:myText.font];
CGContextRestoreGState(context);

这将基本上旋转画布,绘制字符串,然后向后旋转画布。

虽然旋转具有透明背景的视图可能更容易。