iOS图表,删除底部xAxis标签创建的额外空间

Posted

技术标签:

【中文标题】iOS图表,删除底部xAxis标签创建的额外空间【英文标题】:iOS Charts, Remove extra space created by xAxis Labels at bottom 【发布时间】:2018-10-15 01:23:59 【问题描述】:

我有一个使用 ios 图表创建的垂直正常外观条形图。我的问题是,由于某种原因,每当我运行程序时,图表都没有填满它从上到下的视图。 我特别想解决在条形底部和 UIView 底部之间有一个小空间的事实。如何删除此空间以使栏的底部与 UIView 的底部完美对齐? (不需要间隙)

这是我的代码:

    barChartView.xAxis.labelPosition = .top 
    barChartView.xAxis.drawGridLinesEnabled = false
    barChartView.xAxis.drawAxisLineEnabled = false
    barChartView.leftAxis.drawGridLinesEnabled = false
    barChartView.leftAxis.drawAxisLineEnabled = false
    barChartView.rightAxis.drawAxisLineEnabled = false
    barChartView.rightAxis.drawGridLinesEnabled = false
    barChartView.rightAxis.enabled = false
    barChartView.leftAxis.enabled = false
    barChartView.xAxis.labelTextColor = UIColor.white
    barChartView.data?.setDrawValues(false)
    barChartView.xAxis.labelFont = UIFont(name: "HelveticaNeue-Bold", size: 12.0)!
    barChartView.legend.enabled = false
    barChartView.xAxis.valueFormatter = IndexAxisValueFormatter(values:xValues)
    barChartView.xAxis.granularity = 1
    barChartView.animate(xAxisDuration: 1.0, yAxisDuration: 1.0, easingOption: .easeInQuint)
    barChartView.isUserInteractionEnabled = false
    barChartView.barData?.barWidth = 0.65

这是问题的图片...我需要消除栏底部和红色空间之间的间隙。图形所在的 UIView(与红色视图不同)向下到达红色视图的边框。

【问题讨论】:

【参考方案1】:

试试这个:

 barChartView.minOffset = 0.0

如果这不起作用,也添加它。

barChartView.extraBottomOffset = -10

【讨论】:

嗯...没有用,也没有改变图表的任何内容 能否附上您的问题的图片? 我刚刚添加了一张照片【参考方案2】:

我无法在 BarChartView 中找到特殊选项来解决您的问题。但我可以建议另一种方式。您可以将barChartView 嵌入到另一个视图中,并设置从barChartView 底部到具有负值的超级视图底部之间的垂直空间约束,还可以为超级视图设置clipToBounds = true。所以barChartView的底部会低于superview的底部,会被切掉。

嵌入后的视图(黄色背景 - superview,白色 - barChartView)。

底部约束后视图设置为-14。

【讨论】:

听上去很有趣...等有时间我会试试这个。 当我在与您在上图中所做的相同区域的底部约束中添加“- 14”时,由于某种原因,我运行它时没有效果。还有什么我需要做的吗?即使我添加 - 14...,约束线似乎也没有改变 等待 nvm 我刚刚得到它的改变......现在它在 iPhone 7 plus 上看起来很好,但是当我在全屏显示中查看它时,其中红色视图包含包含图形被拉伸以适应新屏幕的比例,栏再次出现。也许有一种方法可以为全屏显示设置约束?顺便说一句 -22 工作 也许是一种计算每个屏幕间隙大小的方法?无论如何,我认为调整全屏显示的约束是最好的解决方案......我现在只需要一些关于如何做到这一点的帮助。谢谢【参考方案3】:

能够通过根据手机显示屏的尺寸以编程方式调整底部约束来解决我的问题。

我将此代码添加到 viewWillAppear 中,我将继续为其他 iPhone 尺寸执行此操作,而不仅仅是 Xs:

if UIScreen.main.bounds.height == 896
        print("Xs Max")
        bottomConstraintGraph.constant = -31.5 // bottomConstraintGraph is the constraint connected from the bottom of the graph's view to the superview and changed here through an outlet connection.

【讨论】:

以上是关于iOS图表,删除底部xAxis标签创建的额外空间的主要内容,如果未能解决你的问题,请参考以下文章

标签从顶部底部有额外的空间?

在Swift 4中集成LineChartView

iOS:UITableView底部的额外空间

如何删除 QMChatViewController 底部的一些额外空间?

并非所有Xaxis标签显示在绑定数据集的图表控件上

Highcharts 图表删除类别(x 轴)上间隔中的现有刻度