如何访问图层以便我可以翻转它?

时间:2015-04-28 19:03:39

标签: ios objective-c calayer core-plot

我在我的xcode项目中实现了corePlot。我试图翻转图表的legend

enter image description here

以下是代码:

CPTGraph *graph = self.hostView.hostedGraph;
CPTLegend *theLegend = [CPTLegend legendWithGraph:graph];
graph.legend = theLegend;

这就是我的尝试:

theLegend.sublayerTransform = CATransform3DMakeScale( CPTFloat(1.0), CPTFloat(-1.0), CPTFloat(1.0) );

那没有做任何事情。所以我尝试将theLegend.sublayerTransform替换为theLegend.transform,但也没有做任何事情。如何访问图例图层以便翻转它?

更新

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:2 inSection:0]];
[cell.layer addSublayer:graph.legend];

1 个答案:

答案 0 :(得分:1)

您问题的简短回答是,您需要翻转包含图例图层的视图图层。

[[viewWithLegendSublayer layer] setTransform:CATransform3DMakeScale(1.0f, -1.0f, 1.0f)];

这样做可以解决问题,但如果您将任何其他子视图添加到该视图中,它们就会颠倒过来。

N.B。:可能有更好的方法来解决此问题,该问题在API的预期设计范围内有效(例如,CPTLegend期望成为CPTGraph的子图层。

这是我们在聊天中讨论的方法。由于您希望将图例放入UITableView,为什么不完全跳过CPTLegend,并使用多个表格视图单元作为图例项目?您可能需要设置自己的颜色,但一旦完成,您就可以创建标准表格视图单元格,并使用图例中的标题设置文本。然后创建一个小方块UIView(您可以围绕其layer个角落以获得视觉吸引力),设置其背景颜色以匹配,并将其设置为您的单元格{{{ 1}}(或对accessoryView和单元格UIImageView执行相同操作。