我需要写一些旋转90度的文字。我首先尝试使用CGAffineTransform旋转的UILabel:
this.myLabel.Center = this.myLabel.Frame.Location;
this.myLabel.Transform = CGAffineTransform.MakeRotation (-(float)Math.PI / 2.0f);
它旋转得恰到好处,但字体现在看起来很模糊,难以阅读。
有没有办法使用CoreText库在UILabel中进行简单的文本旋转,看起来不模糊?
提前谢谢!
答案 0 :(得分:2)
如果你错过了它,Xamarin在github上提供sample,使用CoreText绘制(非旋转)文本。
由于文本最终成为路径,因此旋转整个文本并不困难。 OTOH CoreText比旧版API复杂得多 - 这是获得(控制)更多控制权的代价。
答案 1 :(得分:1)
您可以使用Core Graphics。这有点牵扯,但会做到这一点。
样本将是:
void MyDrawText (CGContextRef myContext, CGRect contextRect) // 1
{
float w, h;
w = contextRect.size.width;
h = contextRect.size.height;
CGAffineTransform myTextTransform; // 2
CGContextSelectFont (myContext, // 3
"Helvetica-Bold",
h/10,
kCGEncodingMacRoman);
CGContextSetCharacterSpacing (myContext, 10); // 4
CGContextSetTextDrawingMode (myContext, kCGTextFillStroke); // 5
CGContextSetRGBFillColor (myContext, 0, 1, 0, .5); // 6
CGContextSetRGBStrokeColor (myContext, 0, 0, 1, 1); // 7
myTextTransform = CGAffineTransformMakeRotation (myRadianRotation); // 8
CGContextSetTextMatrix (myContext, myTextTransform); // 9
CGContextShowTextAtPoint (myContext, 40, 0, "Quartz 2D", 9); // 10
}