Viele haben gefragt, wie man zu Charts 3.0 migrieren kann. Es wird also alles in den Release Notes stehen, sobald es eine Veröffentlichung geben wird, aber ich werde diese vorerst hier aufschreiben:
Dies ist eine Hauptversion mit einigen wichtigen Änderungen. Also bitte aufgepasst.
Aktualisierung:
x-index
es sind tot. Einführung: x-Werte. Jeder Eintrag hat jetzt ein x
und ein y
.y
Werte, der nicht mehr von NSNumberFormatter erbt, um DataSet- und Viewport-Informationen zu haben, um bessere Formatierungsentscheidungen zu treffen.objc(...)
und der Änderung eines Hauptversions-Updates).FillFormatter
jetzt eine Blockdarstellung mit FillFormatter.withblock(...)
saveToCameraRoll()
. Da Xcode 8.0 bei Apple Review "Datenschutz"-Probleme verursacht, müssen Sie den Datenschutzschlüssel für Fotoalben zu Ihrem Info.plist
hinzufügen.Breaking Changes / Migration:
PieChartDataEntry
/ RadarChartDataEntry
startAtZeroEnabled
-Anrufe haben, sind diese seit langem veraltet. Ersetzen Sie sie durch axisMinimum
.chart.valueFormatter = formatter
durch chart.valueFormatter = ChartDefaultValueFormatter(formatter: formatter)
oder chart.valueFormatter = [[ChartDefaultValueFormatter alloc] initWithFormatter:formatter];
axis.valueFormatter = formatter
durch axis.valueFormatter = ChartDefaultAxisValueFormatter(formatter: formatter)
oder axis.valueFormatter = [[ChartDefaultAxisValueFormatter alloc] initWithFormatter:formatter];
ChartViewDelegate
implementiert ist, aktualisieren Sie die chartValueSelected
SchnittstelledrawSliceTextEnabled
durch drawEntryLabelsEnabled
IShapeRenderer
und fügen Sie Ihren Rendering-Code dort einMarkerView
/ MarkerImage
oder IMarker
implementieren. Es gibt jetzt mehr Möglichkeiten als bisher...barSpace
haben, wechseln Sie zu barWidth
saveToCameraRoll()
, ersetzen Sie es durch UIImageWriteToSavedPhotosAlbum(chart.getChartImage(trasparent: false), nil, nil, nil)
@objc(name)
. Wenn Ihr Compiler schreit, dass eine Klasse nicht existiert, versuchen Sie, das Diagramm aus seinem Namen zu entfernen. Dies sollte selten passieren, da wir nur die Klassen ausgewählt haben, die vom Benutzer selten instanziiert werden.@danielgindi Kakaoschoten unterstützen?
@danielgindi kann ich diese Klassen immer noch wie zuvor in mein Projekt kopieren?
Noch nicht in Cocoapods. Wie gesagt, es ist noch nicht erschienen.
Ja, Sie können die Klassen wie zuvor kopieren. Es ist jedoch bequemer, xcodeproj
in das Projekt zu ziehen. Es wird nicht empfohlen, die Quellen selbst zu ziehen, da dies die Aktualisierung von Chrats in Ihrem Projekt erschwert.
@danielgindi
Danke für die tolle Arbeit!
Jetzt habe ich ein Problem, ich bemerke, dass x-Indizes tot sind:
- x-indexes are dead. Intoducing: x-values. Each entry now has an x and a y.
- In general, all functions that accepted x-indices before, now accept an x-value,
so you might have to adjust the names a little bit.
Wie kann ich dann eine Zeichenfolge (z. B. eine Datumszeichenfolge) auf xAxis anstelle einer Gleitkommazahl (wie 1.0, 2.0 ...) anzeigen?
Holen Sie sich das NSTimeInterval eines Datums, NSTimeInterval ist eigentlich ein Double.
Kann die Veröffentlichung kaum erwarten! 👍
@danielgindi Seit ich auf XCode 8.0 aktualisiert habe, wird mein Projekt nicht erstellt, weil ich Charts über Cocoapods installiert habe und immer noch eine Legacy-Version von Swift verwendet. Wie schnell können wir mit einer Veröffentlichung von Charts 3.0 rechnen oder was kann ich in der Zwischenzeit tun, um diese Fehler zu beheben? Danke für all Ihre Bemühungen.
Zeigen Sie Ihr Podfile vorerst auf den Master-Branch statt auf eine Version
@ petester42 Danke für den Tipp, aber ich kann es anscheinend nicht zum pod 'Charts', :git => 'https://github.com/danielgindi/Charts.git', :branch => 'master'
geändert und die Pod-Installation ausgeführt. Die Ausgabe sah so aus:
Aber dann bekam ich immer noch den Fehler "Legacy Swift Language Version verwenden", als ich versuchte, das Projekt auszuführen:
Noch weitere hilfreiche Hinweise?
@Carielle Um Charts 3.0.0 zu installieren, bevor es mit CocoaPods kompatibel ist, entfernen Sie die alten Charts aus Ihrer Pod-Datei und Ihrem Projekt und laden Sie dann die Datei Charts.xcodeproj von dieser Github-Seite herunter.
Öffnen Sie dann Ihr Zielprojekt in XCode und ziehen Sie die Datei Charts.xcodeproj aus dem heruntergeladenen Verzeichnis in Ihr Projekt in der XCode-Oberfläche.
Fügen Sie anschließend Charts.framework im Abschnitt "Embedded Binary" der Allgemeinen Einstellungen Ihres Projekts hinzu.
@ALL überprüfen #1291 auf schnelle
Auf einen Fehler in der Beschreibung der Migration hinweisen:
Wenn Sie Formatierer verwenden:
Ich bekomme das gleiche wie @Carielle , werde versuchen, was @HenryAlkire gesagt hat
Welche Filiale verwendest du?
@rrecio Es kann nicht sein.. Ich habe das vor ein paar Tagen behoben.
Ich habe das normale Cocoapod-Setup verwendet: Pod 'Charts'
Um das Problem zu beheben, habe ich den Podfile-Eintrag entfernt und Charts.framework manuell verknüpft, wie @Henry erklärte
Enviado do meu iPhone
Em 20 de set de 2016, às 21:59, Xuan [email protected] escreveu:
@rrecio Es kann nicht sein.. Ich habe das vor ein paar Tagen behoben.
—
Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail, zeigen Sie sie auf GitHub an oder schalten Sie den Thread stumm.
Haben Sie eine Idee, wann es auf Cocoapods verfügbar sein wird?
Wie aktualisiere ich Charts mit Xcode 8.0 und Swift 3.0 mit Carthage?
Wenn ich "carthage update" ausführe, zieht es immer noch Charts 2.3.0. My Cartfile ist so konfiguriert, dass die neueste Version verwendet wird.
Github "danielgindi/Charts"
$carthage-Update
** Klondiagramme* * Klonergebnis
** Reich-Kakao klonen* * Auschecken von Charts bei "v2.3.0"
@danielgindi
Es wäre großartig, wenn Sie diese Funktionen einbeziehen würden.
1) Liniendiagramm mit unterschiedlicher Markerform
https://github.com/danielgindi/Charts/issues/1405
2) Kann benutzerdefinierte Ansichten an bestimmten Stellen in der x-Achse hinzufügen. Die Anpassung der Hintergrundfarben fehlt in den meisten Ansichten.
https://github.com/danielgindi/Charts/issues/1416
Carthage verwendet die neueste Release-Version. Wenn Sie 3.0 möchten (das noch nicht veröffentlicht ist), verwenden Sie github "danielgindi/Charts" "master"
Laden Sie das vollständige Projekt mit dem Master-Zweig herunter und ziehen Sie dann Sie dann zur Registerkarte Allgemein und fügen Sie Charts.framework unter Eingebettete Binärdateien nach Bereinigen und Erstellen hinzu, damit Sie sehen können, dass alle Fehler verschwunden sind, probieren Sie es einfach aus. Falls Sie Hilfe benötigen, kommentieren Sie es, ich werde Ihnen helfen. @petester42 @Huang-Libo
@HenryAlkire Ich habe getan, was Sie vorgeschlagen haben, und Diagramme aus meiner Pod-Datei entfernt und per Drag & Drop manuell in mein Projekt gezogen und als eingebettete Binärdatei hinzugefügt. Wenn ich jedoch versuche, das Projekt zu erstellen, erhalte ich immer diese Fehlermeldung:
dyld: Library not loaded: @rpath/libswiftCore.dylib
Reason: image not found
Es scheint von Charts.framework/Charts referenziert zu werden. Irgendeine Idee, wie man dieses Problem lösen kann?
Ich habe mein eigenes Problem gelöst - mein Projekt ist ein Objective-C-Projekt mit der Bibliothek Swift Charts, also musste ich zu Build-Einstellungen> Build-Optionen> "Swift-Standardbibliotheken immer einbetten" gehen und es auf JA setzen. Dies ersetzt das veraltete Flag "Eingebetteter Inhalt enthält Swift".
@Carielle kann dieses Problem auch sehen https://github.com/danielgindi/Charts/issues/1487
@danielgindi Ist es möglich, eine Veröffentlichung von Cocoa Pods für Charts 3 zu schätzen? 1-2 Wochen oder mehr wie ein Monat?
Danke für deine Bemühungen 👍
Sie können Diagramme 3 jetzt mit Kakaobohnen verwenden, indem Sie auf den Master-Zweig zeigen. Wir können nicht garantieren, dass dies stabil sein wird, da es nicht endgültig ist.
@petester42 Ich stelle einen Framework-Pod
Update für andere, die Diagramme 3 mit Cocoapods verwenden
Ich arbeite daran, ein Projekt von Swift 2.2 und Xcode 7 auf Swift 3.0 und Xcode 8.0 zu migrieren. Nach dem Ansatz von @Carielle – und wie @petester42 oben erwähnt – können Charts 3 mit Kakaobohnen installiert werden.
Ändern der Poddatei, um Folgendes zu haben:
pod 'Charts', :git => 'https://github.com/danielgindi/Charts.git', :branch => 'master'
führte bei mir zu folgendem (1. Oktober 2016)
Trotzdem gibt es noch einige Build-Time-Probleme, an denen ich arbeite, wie zu erwarten ist, bis die endgültige Version veröffentlicht wird.
Zum Beispiel verursacht plotView.xAxis.setLabelsToSkip(10)
Probleme, da die Methode setLabelsToSkip jetzt nicht erkannt wird. Kann ich davon ausgehen, dass dies vorübergehend ist, während an der endgültigen Version gearbeitet wird, oder sollte ich eine andere Methode verwenden?
Danke @danielgindi und anderen für deine tolle Arbeit! Ich würde gerne zur Migrationsdokumentation beitragen, während ich lerne, indem ich mein eigenes Projekt anpasse.
Bevor ich das iOS-Diagramm auf die Version 3.0 aktualisiere, kann ich
let RadarChartData = RadarChartData(xVals: dataPoints, dataSet: RadarChartDataSet)
nach dem Upgrade kann xVals jedoch nicht nur in RadarChartData festgelegt werden
let RadarChartData = RadarChartData(dataSet: RadarChartDataSet)
Wie kann ich xVals in der neuesten Version einstellen. Ich musste es versuchen
dataEntry = RadarChartDataEntry(value: Double(cleaningValue), data: "setTitle" as AnyObject?)
funktioniert aber nicht, ich hatte viele Dokumente durchsucht, kann aber nicht finden, wie das geht, könnten Sie mir ein Beispiel dafür geben, danke beraten.
@AnChiChang bitte lesen Sie die obigen Hinweise gründlich durch.
Danke, verstehe durch Ticket 1496
Wie kann ich in v3.0 die x-Werte von Doppel-Array zu String-Array formatieren?
@bingozb bitte schau dir die Demos an
var a:Doppelt = 1,5
var b:String = String(format:"%f", a)
print("b: (b)") // b: 1.500000
@danielgindi Ich benutze das Liniendiagramm 1, und ich hatte die Demo gesehen und nichts darüber gefunden.
NSMutableArray *values = [[NSMutableArray alloc] init];
[Werte addObject:[[ChartDataEntry alloc] initWithX:i y:val]];
LineChartDataSet *set1 = [[LineChartDataSet alloc] initW ithValues:values label:@"xxx"];
die Demo verwendet nur doppelte x-Werte. ChartDataEntry hat keine Init-Methode, mit der ich String-Parameter senden kann.
Nun, ich habe die Probleme gesehen und einen gefunden, der besagt, dass wir die Ganzzahlwerte des Datums senden, dann formatieren und als x-Label anzeigen können. Aber ich finde keine Methode dazu. Ich bin mir nicht sicher, ob das auf diese Weise tatsächlich funktionieren kann.
Hilf mir bitte. Ich muss das Datum auf der x-Achse anzeigen.
Hallo @bingozb
Ich hoffe, Ihre X-Werte werden in einem Array gespeichert, also tun Sie bitte diese Art von,
NSMutableArray *xVals;
Ich hoffe, Sie haben Verständnis.
@rs10693 Ja, ich finde diese Protokollmethode. Es scheint, dass ich es implementieren muss. Aber ich finde, kein Delegierter hat das IChartAxisValueFormatter-Protokoll eingehalten. Wer sollte dieses Protokoll einhalten und wo soll diese Methode implementiert werden? Ich lasse meinen Controller dies tun, aber es funktioniert nicht.
@bingozb Verwenden Sie ChartViewDelegate und IChartAxisValueFormatter und ich hoffe, Sie @importieren Diagramme ;
@rs10693 Oh, ich valueFormatter ...
@bingozb was kannst du sagen, ich verstehe es nicht. Bitte erarbeiten Sie mich.
@danielgindi ich kann Charts 3.0.0 immer noch nicht installieren
Folgender Fehler tritt auf, wenn pod install
Abhängigkeiten analysieren
[!] Folgende Anforderungen können nicht erfüllt werden:
Charts (~> 3.0.0)
erforderlich von Podfile
Keine Ihrer Spezifikationsquellen enthält eine Spezifikation, die die Abhängigkeit erfüllt: Charts (~> 3.0.0)
.
Sie haben entweder:
pod repo update
aktualisieren können.Hinweis: Ab CocoaPods 1.0 findet pod repo update
standardmäßig nicht auf pod install
.
Bitte helfen Sie, bedeutet dies, dass Charts 3.0.0 noch nicht zur Installation freigegeben ist, indem Sie verwenden
oder übersehe ich irgendeinen Schritt.
3.0 ist noch nicht in Kakaobohnen, weil es noch nicht endgültig ist. Sie können auf das Git-Repo und den Master verweisen, um jetzt 3.0 zu erhalten
Wir haben jetzt 3.0.0 veröffentlicht !
Das ist toll zu wissen.
Aber ich mache mir ein bisschen Sorgen, ob wir unsere Kakaofrucht oder ihr Repository aktualisieren müssen, um die neu veröffentlichte Version 3.0.0 zu installieren?
wout 🎉
@danielgindi, du brauchst mich, um die
Versucht, jetzt nach langer Zeit, sagte, dass die Podspec nicht validiert ...
Ja, es dauert eine Weile. Ich kann es tun. Sie benötigen Cocoapods 1.1, um mit Xcode 8/swift 3 zu arbeiten
@petester42 @danielgindi
Ich habe
pod --version
= 1.1.0
aber der Befehl pod install
installiert immer noch ältere Versionen.
Abhängigkeiten analysieren
Abhängigkeiten herunterladen
Installing Charts (2.3.0)
Bitte führen
Es funktioniert jetzt, nachdem das Master-Repository von Pod aktualisiert wurde, danke für die Hilfe
Erhalten eines solchen Fehlers in Swift 3.0 , während das Balkendiagramm mit dieser Bibliothek implementiert wird.
Nachdem der obige Fehler behoben wurde, wird der nächste Fehler wie unten gezeigt angezeigt.
Wie behebe ich einen solchen Fehler in Swift 3.0?
let chartDataSet = BarChartDataSet(Werte: dataEntries, Label: nil)
let chartData = BarChartData(dataSet: chartDataSet)
zu xVals müssen Sie stringForValue implementieren.
Vielen Dank. Wie soll ich stringForValue für xVals implementieren.
Bitte liefern Sie schnell 3 Beispiele
Hallo,
Ich bin gerade von 2 auf 3 migriert (ich verwende 3.0.2) und stoße auf 2 Probleme:
Vielen Dank für die Eingabe.
in der Klasse BarChartRenderer
in open override func drawValues(context: CGContext)
Zeile hinzufügen 408
```
wenn !dataSet.isStacked
{
für j in 0 ..< Int(ceil(Double(dataSet.entryCount) * animator.phaseX))
{
Guard let e = dataSet.entryForIndex(j) als? BarChartDataEntry sonst {weiter}
let rect = buffer.rects[j]
let x = rect.origin.x + rect.size.width / 2.0
if !viewPortHandler.isInBoundsRight(x)
{
break
}
if !viewPortHandler.isInBoundsY(rect.origin.y)
|| !viewPortHandler.isInBoundsLeft(x)
{
continue
}
let val = e.y
if val == 0 <-----------this line
{ <-----------this line
continue <-----------this line
} <-----------this line
```
füge eine Variable hinzu, wenn du willst
var drawValuesZeroEnabled: Bool { get set }
Danke Thierry.
Das ist also behoben :)
Ich habe immer noch das Problem mit diesem seltsamen Abstand.
Also habe ich gerade ein Standard-Balkendiagramm mit einem Wert von 0 erstellt und ich habe immer noch das Problem - ich habe versucht, so nah wie möglich an einen einfachen Balken zu kommen, um zu sehen, was das Problem war.
Es sieht aus wie in der Demo, aber sobald ich einen Wert zwischen 0 und 0,9999 eingebe, bekomme ich diese Auffüllung.
Hier der Beispielcode:
<strong i="11">@IBOutlet</strong> var barChartView: BarChartView!
func viewDidLoad() {
super.viewDidLoad()
self.styleChart()
self.configureChart()
}
internal func styleChart() {
self.barChartView.xAxis.labelPosition = .bottom
self.barChartView.xAxis.labelCount = 2
}
internal func configureChart() {
var xValues = [String]()
var entries: [ChartDataEntry] = Array()
xValues.append("TEST 5")
xValues.append("TEST 0")
entries.append(BarChartDataEntry(x: Double(0), y: Double(5) ))
entries.append(BarChartDataEntry(x: Double(1), y: Double(0) ))
let dataSet = BarChartDataSet(values: entries, label: "")
dataSet.drawIconsEnabled = false
dataSet.drawValuesEnabled = true
let formatter = NumberFormatter()
formatter.numberStyle = NumberFormatter.Style.decimal
dataSet.valueFormatter = DefaultValueFormatter(formatter: formatter)
let barChartData = BarChartData(dataSet: dataSet)
barChartData.barWidth = 0.2
self.barChartView.data = barChartData
}
Ziemlich einfach.
Es ist ein Fehler?
Problem mit 0:
Nein 0 :
Danke für die Hilfe ;)
Wo finde ich Dokumente zur alten API für Diagramme? Ich habe dieses Framework nie verwendet (abgesehen davon, dass ich es einige Male aktualisiert habe) und ich muss von 2.3 auf 3.0.4 aktualisieren, daher wären alte Dokumente schön, um alten Code herauszufinden, z.
[entrySet addObject:[[ChartDataEntry alloc] initWithValue: item.avgSpeed xIndex:index]];
Nun gibt es kein Init namens initWithValue: xIndex
, sondern ein Init namens:
initWithX: y:
, also versuche ich herauszufinden, was alte Parameter waren und wie man neue init verwendet, um das gleiche Ergebnis zu erzielen ...
Auch das valuesObjc-Array fehlt jetzt:
//myLineChartView is LineChartView
NSDate* date = (NSDate*)[myLineChartView.xAxis.valuesObjc objectAtIndex:index];
Wie gesagt, ich habe dieses Framework nie verwendet, daher wäre etwas Hilfe dankbar, oder zumindest ein Link zu alten API-Dokumenten wäre hilfreich ...
Ich glaube nicht, dass es eine solche Ressource gibt. Sie können den Legacy/2.3-Zweig überprüfen, um die Demos zu überprüfen und solche mit anderen Versionen der aktuellen Version zu vergleichen.
BarChartData.init(xVals: xVals, dataSets: dataSets) kann nicht funktionieren. was ist ersetzen?
Wie kann ich den x-Wert des Liniendiagramms programmgesteuert in die Mitte scrollen?
Hilfreichster Kommentar
@Carielle Um Charts 3.0.0 zu installieren, bevor es mit CocoaPods kompatibel ist, entfernen Sie die alten Charts aus Ihrer Pod-Datei und Ihrem Projekt und laden Sie dann die Datei Charts.xcodeproj von dieser Github-Seite herunter.
Öffnen Sie dann Ihr Zielprojekt in XCode und ziehen Sie die Datei Charts.xcodeproj aus dem heruntergeladenen Verzeichnis in Ihr Projekt in der XCode-Oberfläche.
Fügen Sie anschließend Charts.framework im Abschnitt "Embedded Binary" der Allgemeinen Einstellungen Ihres Projekts hinzu.