我在 UIImage 上添加了一个文本标签。我成功地添加了文本标签,但是我想将它旋转 90 度以使其垂直。
这是我拥有的代码:
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();
我尝试使用以下方法转换 TextView :
[myText setTransform:CGAffineTransformMakeRotation(-90* M_PI/180)];
也:
[myText setTransform:CGAffineTransformMakeRotation(-M_PI / 2)];
但它根本不起作用,没有任何 react 。将不胜感激任何帮助!
最佳答案
您正在使用 [myText.text drawInRect:myText.frame withFont:myText.font];
绘制文本但是您正在旋转从中获取文本的 View 。如果要以这种方式绘制字符串,则需要旋转上下文然后绘制。例如:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextRotateCTM(context,-M_PI / 2);
[myText.text drawInRect:myText.frame withFont:myText.font];
CGContextRestoreGState(context);
这将实质上旋转 Canvas ,绘制字符串,然后将 Canvas 旋转回来。
不过,仅旋转具有透明背景的 View 可能更容易。
关于ios - UITextView 不会旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36249620/