如何反转变换UIView?

时间:2009-12-11 10:08:45

标签: iphone uiview transform core-plot

我正在使用核心图库在我的iPhone应用程序上绘制条形图,当我尝试向图表添加标签或其他视图时出现问题,

实际上我添加的视图是垂直反转like this ........

代码就像

UILabel *lbl= [[UILabel alloc] initWithFrame:CGRectMake(250, 90, 70, 25)];
    [lbl setBackgroundColor:[UIColor redColor]];
    [lbl setText:@"HELLO"];
    [self.view addSubview:lbl];
    [lbl release];

我不敢玩核心图库。

还有其他方法可以做正确的事情吗?我应该在添加视图之前进行转换吗?

如果这是解决方案,那么这将是昂贵的,因为我必须添加多个子视图。

希望每个人都明白我的问题。

3 个答案:

答案 0 :(得分:12)

嗯,看起来核心情节视图是使用CGAffineTransform反转的。您的视图可能是从其superview继承反转。 这实际上很简单,

lbl.transform = CGAffineTransformMakeScale(1,-1);

应该做的伎俩。 如果你不得不多次这样做,或许用类似的东西来简化它,

CGAffineTransform verticalFlip = CGAffineTransformMakeScale(1,-1);
lbl.transform = verticalFlip;
otherLbl.transform = verticalFlip;

等...

x轴翻转为CGAffineTransformMakeScale(-1,1);

答案 1 :(得分:6)

为避免猜测实际的变换值,您可以尝试使用CGAffineTransformInvert函数:

lbl.transform = CGAffineTransformInvert(self.view.transform);

答案 2 :(得分:0)

如果我们要转换为3D模型的图层,则需要按以下方式进行处理,

迅速5:

// To inverse the graph vertically
annotationGraph.transform = CATransform3DMakeAffineTransform(CGAffineTransform(scaleX: 1, y: -1))

否则,您将收到此信息,

  

无法将类型“ CGAffineTransform”的值分配给类型“ CATransform3D”