Swift iOS图表折线图缺少最后一个轴标签
我用iOS图表盒创建了一个折线图 首先,我有一个名为TestBalance的自定义对象数组,其中包含一个日期字符串(转换为日期)和一个金额(Double)。目前,我已经创建了这样一个硬编码数组Swift iOS图表折线图缺少最后一个轴标签,swift,charts,ios-charts,Swift,Charts,Ios Charts,我用iOS图表盒创建了一个折线图 首先,我有一个名为TestBalance的自定义对象数组,其中包含一个日期字符串(转换为日期)和一个金额(Double)。目前,我已经创建了这样一个硬编码数组 let balanceTestArray : [TestBalance] = [TestBalance(dateString: "01/01/2019", amount: 1920.24), //More elements... , TestBalance(dateString: "28/01/2019"
let balanceTestArray : [TestBalance] = [TestBalance(dateString: "01/01/2019", amount: 1920.24), //More elements... , TestBalance(dateString: "28/01/2019", amount: 844.24)]
然后,我继续为图形数据创建ChartDataEntry数组
let now = Date().timeIntervalSince1970
let dayInterval: TimeInterval = 3600 * 24
guard let firstDate = balanceTestArray.first else {return}
guard let lastDate = balanceTestArray.last else {return}
guard let firstDateDateValue = firstDate.date else {
print("No Date")
return
}
guard let lastDateDateValue = lastDate.date else {
print("No Date")
return
}
let from = firstDateDateValue.timeIntervalSince1970
let to = lastDateDateValue.timeIntervalSince1970 + dayInterval
var counter = 0
let values = stride(from: from, to: to, by: dayInterval).map { (x) -> ChartDataEntry in
let y = balanceTestArray[counter].amount
counter += 1
return ChartDataEntry(x: x, y: Double(y))
}
上面的代码似乎工作得很好,像这样绘制所有的点和轴标签
我已按以下方式设置xAxis:
let xAxis = lineChartView.xAxis
xAxis.labelPosition = .bottom
xAxis.labelFont = UIFont(name: "Montserrat-Regular", size: 10)!
xAxis.labelTextColor = UIColor(hex: "#A2A2A2FF")!
xAxis.drawAxisLineEnabled = false
xAxis.drawGridLinesEnabled = false
xAxis.granularity = 1.0
xAxis.centerAxisLabelsEnabled = false
xAxis.avoidFirstLastClippingEnabled = true
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE dd"
let xValuesNumberFormatter = ChartXAxisFormatter()
xValuesNumberFormatter.dateFormatter = dateFormatter
xAxis.valueFormatter = xValuesNumberFormatter
这就是我的两个主要问题开始显现的地方
你不需要为每一件你正在检查的东西都有一份单独的守卫声明。你可以做
guard let unwrappedThingOne=optionalThing,let unwrappedThingTwo=optionalThingTwo还有一件事{.return}
Swift内置了一些日期计算功能,这样你就不用****计算秒数了。您可以这样声明当前日期:let now=date()。然后您可以创建新日期,如下所示: