2011-07-02 27 views
2

我想在iPhone上绘制一些文本,但在横向模式下,主页按钮位于左侧。所以我需要以某种方式扭转数字(我猜我使用了变换)?如何使用CGContext绘制其他设备方向的字符串iOS

这是我现在有:

CGContextSetRGBFillColor(context, 1.0, 0, 0, 1.0); 
    CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); 
    CGContextSelectFont(context, "Helvetica", 20, kCGEncodingMacRoman); 
    CGContextSetTextMatrix(context, CGAffineTransformMakeRotation(M_PI/2)); 
    CGContextSetTextDrawingMode(context, kCGTextFill); 
    NSString *t = [NSString stringWithFormat:@"%i",seconds]; 
    const char *str=[t UTF8String]; 
    CGContextShowTextAtPoint(context,6.0,15.0,str,strlen(str)); 

什么我需要添加到旋转文本,以便它可以当手机景观左边的home键被读取。

+0

我建议你实现shouldAutorotateToInterfaceOrientation:在您的视图控制器,使视图自动旋转,并设置自动尺寸口罩appropriatly – Felix

+0

应用程序是唯一的风景... – StanLe

+0

那么你应该只添加UIInterfaceOrientationLandscapeLeft到info.plist文件中的UISupportedInterfaceOrientations – Felix

回答

0

你必须应用两个变换矩阵。第一个将翻转文本,第二个将旋转它。试试下面的代码:

CGContextSetRGBFillColor(context, 1.0, 0, 0, 1.0); 
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); 
CGContextSelectFont(context, "Helvetica", 20, kCGEncodingMacRoman); 
CGAffineTransform xform = CGAffineTransformMake(
               1.0, 0.0, 
               0.0, -1.0, 
               0.0, 0.0); 
CGContextSetTextMatrix(context, xform); 
CGContextConcatCTM(context, CGAffineTransformMakeRotation(M_PI_2)); 
CGContextSetTextDrawingMode(context, kCGTextFill); 
NSString *t = [NSString stringWithFormat:@"%i",seconds]; 
const char *str=[t UTF8String]; 
CGContextShowTextAtPoint(context,6.0,15.0,str,strlen(str));