0

我想旋转位于设定位置的 NSString ,以便它从下到上读取。

我知道问题在于 CGContextTranslateCTM,但我不确定如何解决它。如果我评论这一行,我会在我想要的地方看到我的文本,只是没有旋转。这必须将我的 NSString 移动到它不可见的地方。

想法?

这是我尝试过的:

NSString * xString = [NSString stringWithFormat:@"%@", self.xStringValue];
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [[UIColor blackColor] CGColor]);
CGContextSaveGState(UIGraphicsGetCurrentContext());
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, 0);
CGContextRotateCTM(UIGraphicsGetCurrentContext(), M_PI/2);
[xString drawInRect:(CGRectMake(x, y, width, height) withFont:self.Font];
CGContextRestoreGState(UIGraphicsGetCurrentContext());

编辑:

上面的代码正在绘制我的 NSString 值,但它们被定位在我看不到它们的屏幕之外。

这段代码实际上是让它们出现在屏幕上,只是不在正确的位置。

X 和 Y 都是计算的距离。

- (void)drawRect:(CGRect)rect
{
     CGContextRef context = UIGraphicsGetCurrentContext();
     CGContextSaveGState(context);
     CGAffineTransform transform = CGAffineTransformMakeRotation(-90.0 * M_PI/180.0);
     CGContextConcatCTM(context, transform);
     CGContextTranslateCTM(context, -rect.size.height-x, rect.size.height-y);
     CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [[UIColor blackColor] CGColor]);
     [xString drawInRect:CGRectMake(x, y, w, h) withFont:self.textFont];
     CGContextRestoreGState(context);
}

编辑三:

解决方案:

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);
    CGContextTranslateCTM(context, point.x, point.y);
    CGAffineTransform textTransform = CGAffineTransformMakeRotation(-1.57);
    CGContextConcatCTM(context, textTransform);
    CGContextTranslateCTM(context, -point.x, -point.y);
    CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [[UIColor whiteColor] CGColor]);
    [string drawInRect:CGRectMake(x, y, width, height) withFont:font];
    CGContextRestoreGState(context);
4

1 回答 1

-2

如果你想UILabel垂直旋转(90°),你可以这样做:

[_myLabel setTransform:CGAffineTransformMakeRotation(-M_PI / 2)];

UILabel 的结果:

在此处输入图像描述

于 2013-10-01T21:43:54.193 回答