【问题标题】:Background ImageView is upside down(flipped) when I use CPTPGraphHostingView [Core plot]当我使用 CPTPGraphHostingView [核心情节] 时,背景 ImageView 是颠倒的(翻转)
【发布时间】:2012-03-29 14:05:17
【问题描述】:

我在我的 iphone 应用程序中使用 core plot 1.0。一切正常,图形绘制完美,但我面临一个奇怪的问题,即图形页面(CPTPGraphHostingView)上的所有控件都被镜像。

即:在那个xib文件上,我将top UIView的类Identity中的类设置为CPTPGraphHostingView,然后问题就出现了。

请帮我解决这个问题。控件在界面生成器中正确显示,但是当我运行项目时,一切都搞砸了。

即使我尝试以编程方式添加背景图像,但这也是镜像的。

【问题讨论】:

标签: iphone ios core-plot


【解决方案1】:

此答案的参考资料:

我知道整个 CPTPGraphHostingView 是倒置的,以支持 Mac OS 和 iOS。这是设计使然,不是错误。

因此,给定链接的解决方案是:

  1. 向您的 xib 文件添加两个视图,一个是 CPTPGraphHostingView 类型(用于添加图形),另一个是 UIView 类型(用于添加任何其他 ui 控件、背景等)。您可以通过修改File's Owner windowView Identity tabheading Class Identity下的Class field来修改View的类型。
  2. 现在将图形添加到 CPTPGraphHostingView 并将其他 ui 控件添加到其他视图 (UIView)
  3. 故事结束

更新: 如果您将 CPTPGraphHostinView 添加到界面,则不会看到其他组件,因为您必须设置主题,并将 CPTXYGraph 填充为 nil。即在初始化 CPTXYGraph 后添加以下行:

CPTTheme *theme = nil;
[barChart applyTheme:theme]; // barChart is my CPTXYGraph

barChart.fill = nil;
barChart.plotAreaFrame.fill = nil;

注意::添加 CPTPGraphHostingView 使其成为顶级 UIView 的子级,其他组件在顶级 UIView 中,CPTPGraphHostingView 高于所有其他组件。

【讨论】:

  • “虽然是一种非常可悲的设计方法” - 看到我是如何设计这个的,我对这个评论感到冒犯。正如我所解释的here,默认情况下,UIViews 会翻转其中包含的 CALayers 的坐标系。 Mac 上的 NSViews 和普通 Quartz 上下文不会翻转这个坐标系。因此,为了在 Mac 和 iOS 上使用相同的渲染代码,需要通过 Core Plot 反转两者之一。鉴于 UIView 是进行翻转的,我们决定在 iOS 上反转该转换,以便它与 Mac 匹配。
  • @BradLarson 好的,很抱歉,删除了那些 cmets。
  • 我在 xib 的 CPTGraphHostingVIew 旁边添加了 UIView 和一个图像视图。但我只能看到图形而不是带有图像的视图。图形视图是否与 UIView 重叠?我哪里错了?
  • @TechnocraT 我已经更新了我的答案。这将解决您的问题 IA
  • @djaqeel 我已经添加了那些设置为零的行,但它不会影响输出。我将视图添加为 View(UIView)-> Image view(UIImageView) ,图形托管视图 (CPTGraphHostingView)
【解决方案2】:

试试self.view = (CPTPGraphHostingView *)view

【讨论】:

  • 在哪个函数中? viewDidLoad?
猜你喜欢
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
相关资源
最近更新 更多