使用情节提要的 PNChart 和 UIStackview 问题

Posted

技术标签:

【中文标题】使用情节提要的 PNChart 和 UIStackview 问题【英文标题】:PNChart and UIStackview Issues using storyboard 【发布时间】:2016-06-19 01:55:35 【问题描述】:

我在使用带有情节提要和 uistackviews 的 PNChart (https://github.com/kevinzhow/PNChart) 库时遇到了困难。我希望图表能够简单地填充现有 uiview 的空间,我在代码中添加了 pnchart。但是图表显示在屏幕外,而不是在 uiview 的范围内。

这是问题的屏幕截图 - 请注意,我已将 UIView 设置为蓝色,以便我可以看到它具有正确的布局。如您所见,图表比添加它的 uiview 大得多,您无法看到 y 元素或整个图表。

这是我的故事板结构

Graph View 是 UIView - 我将 PNChart 添加为它的子视图。这是我的代码:
CGRect graphViewFrame = _graphView.frame;
PNLineChart * lineChart = [[PNLineChart alloc] initWithFrame:graphViewFrame];
[lineChart setXLabels:@[@"SEP 1",@"SEP 2",@"SEP 3",@"SEP 4",@"SEP 5"]];

// Line Chart No.1
NSArray * data01Array = @[@60.1, @160.1, @126.4, @262.2, @186.2];
PNLineChartData *data01 = [PNLineChartData new];
data01.color = PNFreshGreen;
data01.itemCount = lineChart.xLabels.count;
data01.getData = ^(NSUInteger index) 
        CGFloat yValue = [data01Array[index] floatValue];
        return [PNLineChartDataItem dataItemWithY:yValue];
;
// Line Chart No.2
NSArray * data02Array = @[@20.1, @180.1, @26.4, @202.2, @126.2];
PNLineChartData *data02 = [PNLineChartData new];
data02.color = PNTwitterColor;
data02.itemCount = lineChart.xLabels.count;
data02.getData = ^(NSUInteger index) 
    CGFloat yValue = [data02Array[index] floatValue];
    return [PNLineChartDataItem dataItemWithY:yValue];
;

lineChart.chartData = @[data01, data02];
[lineChart strokeChart];
[_graphView addSubview:lineChart];

这里是堆栈视图的详细信息

任何想法或建议表示赞赏。我已经联系了 PNChart 的开发者。

【问题讨论】:

【参考方案1】:

您是否使用尺码等级? 检查您获得和使用的第一帧是否真的是您在呈现视图后所期望的帧。例如,如果您使用 Xib,则“viewDidApear”前后的帧因屏幕尺寸而异。

其次,使用“clipToBounds”确保图形没有超出设置的范围。

self.lineChart.clipsToBounds = YES;

祝你好运

【讨论】:

我已经厌倦了剪辑,但这并没有帮助。我没有使用尺码等级....据我所知。 1.是否在“strokeChart”之前使用了clip to bounds? 2.线条:[lineChart strokeChart]; [_graphView addSubview:lineChart] :您应该首先添加为子视图,然后调用描边。 3.尝试用debug工具看看frame有没有变化,我以前用PNCharts也遇到过同样的问题,就是这样 问题是clipToBounds剪切了图表,我希望它(调整大小/适合)在父uiview的范围内 这是我在 Xcode 中分析 UI 并打印 PNChart 帧信息时得到的结果: > 您试图在视图知道屏幕的确切大小之前绘制图表。如果父 ViewController 调用了“viewDidApear”方法,请尝试仅在“viewDidApear”方法之后调用“strokeChart”,并查看大小是否正确。如果我的假设是正确的。大小应该是您所期望的。然后您将有两个选项,1. 通过透视到 UIScreen 将框架设置为 progrematically。 2. 等待视图设置好进行绘制。

以上是关于使用情节提要的 PNChart 和 UIStackview 问题的主要内容,如果未能解决你的问题,请参考以下文章

动态更改情节提要或情节提要上的场景

使用 TabBar 的情节提要参考不显示 TabBar 项目图像和标题

为啥我不能 CTRL 拖动情节提要的动作?

pushViewController 似乎不适用于情节提要和 QLPreviewController

关于使用情节提要的标签栏

有没有办法在 Xcode 7 的两个不同窗口中打开和查看情节提要?