Новые функциональные диаграммы SwiftUI для Swift 6 не ограничивают значения y. Таким образом, эти значения могут выходить за пределы диаграммы и охватывать другие элементы пользовательского интерфейса на экране.
Ниже приведен пример проблемы. Область, выделенная зеленым цветом, — это область диаграммы, в которой должны содержаться значения. Однако синие линии выходят за пределы экрана.:
Это код диаграммы, основанный на одном из примеров Apple WWDC:
import SwiftUI
import Charts
struct ChartView: View {
var body: some View {
Chart {
LinePlot(x: "x", y: "1 / x", domain: -10...10) { x in
guard x != 0 else {
return .nan
}
return 1 / x
}
}
.chartBackground(alignment: .center) { _ in
Rectangle()
.fill(Color.green)
}
.frame(width: 300, height: 300)
.chartXScale(domain: -10...10)
.chartYScale(domain: -10...10)
}
}
В примечаниях к выпуску Feedback Assistant, касающихся Swift Charts, говорится следующее.
Но я не знаю, как установить домен для y в функции и относится ли это к той же проблеме. В качестве обходного пути я использовал параметр домена LinePlot, но, похоже, он не повлиял на x или y. Если параметр домена удален, все остается по-прежнему.
Как можно исправить эту диаграмму ИЛИ как можно реализовать обходной путь?





Кажется, сюжет не обрезан в кадре Chart. Вы можете сделать это вручную с помощью clipped().
Chart {
// ...
}
.chartBackground(alignment: .center) { _ in
Rectangle()
.fill(Color.green)
}
.frame(width: 300, height: 300)
.clipped() // <-----