2009-12-11 40 views
1

我正在使用核心图库在我的iPhone应用程序上绘制条形图,并且当我尝试向图表添加标签或其他视图时出现问题,实际上,我添加的视图是垂直绘制的反转like this ........如何反转变换一个UIView?

的代码是一样

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

我不敢与核心积库玩。

那么,有没有其他办法可以做到的事情吧?我应该在添加视图之前进行转换吗?

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

地希望我的问题是清楚的给大家。

回答

11

嗯,它看起来像核心情节视图使用CGAffineTransform反转。您的观点可能会继承其超视图的反转。 它实际上做的很简单,

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

应该做的伎俩。 如果你必须做很多次也许喜欢的东西把它简化,

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

等等

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

+0

大,我做到了喜欢.... lbl.transform = CGAffineTransformTranslate(verticalFlip,0,-300); – 2009-12-11 12:40:56

+3

是的,我们这样做是为了匹配的坐标系统为Mac和iPhone之间绘制。如果你想这是更简单的,我的建议是不是你的UILabel添加到图表的CPLayerHostingView,而是要创建一个包含图中的上海华和添加的UILabel了这一点。 – 2009-12-11 15:41:33

6

为了避免猜测实际实现值你可以尝试使用CGAffineTransformInvert功能:

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