我在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)];
但它根本不起作用,没有任何反应。非常感谢任何帮助!
答案 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);
这将基本上旋转画布,绘制字符串,然后向后旋转画布。
虽然旋转具有透明背景的视图可能更容易。