Beaucoup ont demandé comment migrer vers Charts 3.0. Donc, tout sera dans les notes de version dès qu'il y aura une version, mais je vais les écrire ici pour l'instant :
Il s'agit d'une version majeure, avec quelques changements de rupture. Alors s'il vous plaît faites attention.
Mises à jour:
x-index
es sont morts. Introduisant : les valeurs x. Chaque entrée a maintenant un x
et un y
.y
, n'héritant plus de NSNumberFormatter, pour avoir des informations de dataSet et de fenêtre d'affichage pour prendre de meilleures décisions de formatage.objc(...)
et le changement d'une mise à jour de version majeure)FillFormatter
maintenant une représentation de bloc utilisant FillFormatter.withblock(...)
saveToCameraRoll()
. Étant donné que Xcode 8.0 provoque des problèmes de "confidentialité" avec Apple Review, vous devez ajouter la clé de confidentialité des albums photo à votre Info.plist
pour cela.Changements marquants / comment migrer :
PieChartDataEntry
/ RadarChartDataEntry
startAtZeroEnabled
, ils sont obsolètes depuis longtemps. Remplacez-les par axisMinimum
.chart.valueFormatter = formatter
par chart.valueFormatter = ChartDefaultValueFormatter(formatter: formatter)
ou chart.valueFormatter = [[ChartDefaultValueFormatter alloc] initWithFormatter:formatter];
axis.valueFormatter = formatter
par axis.valueFormatter = ChartDefaultAxisValueFormatter(formatter: formatter)
ou axis.valueFormatter = [[ChartDefaultAxisValueFormatter alloc] initWithFormatter:formatter];
ChartViewDelegate
est implémenté, mettez à jour l'interface chartValueSelected
drawSliceTextEnabled
par drawEntryLabelsEnabled
IShapeRenderer
et placez-y votre code de renduMarkerView
/ MarkerImage
ou d'implémenter IMarker
. Il y a plus d'options qu'avant maintenant...barSpace
, passez à l'utilisation de barWidth
saveToCameraRoll()
, remplacez par UIImageWriteToSavedPhotosAlbum(chart.getChartImage(trasparent: false), nil, nil, nil)
@objc(name)
Swift 2.2 . Si votre compilateur crie qu'une classe n'existe pas, essayez de supprimer le graphique de son nom. Cela devrait rarement arriver, car nous n'avons choisi que les classes qui sont rarement instanciées par l'utilisateur.@danielgindi Soutenir les cocopodes ?
@danielgindi puis-je toujours copier ces classes dans mon projet comme avant ?
Pas encore dans Cocoapods. Comme je l'ai dit, il n'est pas encore sorti.
Oui, vous pouvez copier les classes comme avant. Cependant, il est plus confortable de faire glisser le xcodeproj
vers le projet. Il n'est pas recommandé de faire glisser les sources elles-mêmes, car cela rendra la mise à jour des Chrats dans votre projet plus difficile.
@danielgindi
Merci pour votre excellent travail !
Maintenant, j'ai un problème, je remarque que les x-index sont morts :
- 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.
Alors, comment puis-je afficher une chaîne (par exemple, une chaîne de date) sur xAxis plutôt qu'un nombre flottant (comme 1.0, 2.0 ...) ?
Obtenez le NSTimeInterval d'une date, NSTimeInterval est en fait un double.
J'attends la sortie avec impatience ! ??
@danielgindi Depuis que j'ai mis à jour vers XCode 8.0, mon projet ne sera pas généré car j'ai installé Charts via Cocopods et il utilise toujours une version héritée de Swift. Dans combien de temps pouvons-nous nous attendre à une sortie de Charts 3.0, ou que puis-je faire pour résoudre ces erreurs en attendant ? Merci pour tous vos efforts.
Pointez votre podfile sur la branche master au lieu d'une version pour l'instant
@ petester42 Merci pour le conseil, cependant, je n'arrive pas à le faire fonctionner. J'ai changé mon podfile en pod 'Charts', :git => 'https://github.com/danielgindi/Charts.git', :branch => 'master'
et j'ai exécuté l'installation du pod. La sortie ressemblait à ceci :
Mais j'ai toujours eu l'erreur "Utiliser la version du langage Swift hérité" lorsque j'ai essayé d'exécuter le projet :
D'autres conseils utiles ?
@Carielle Pour installer Charts 3.0.0 avant qu'il ne soit compatible avec CocoaPods, supprimez les anciens Charts de votre fichier pod et de votre projet, puis téléchargez le fichier Charts.xcodeproj depuis cette page github.
Ensuite, ouvrez votre projet cible dans XCode et faites glisser le fichier Charts.xcodeproj du répertoire dans lequel il a été téléchargé dans votre projet dans l'interface XCode.
Après cela, ajoutez Charts.framework dans la section "Embedded Binary" des paramètres généraux de votre projet.
@ALL vérifie le #1291 pour les problèmes rapides 2.3 et 3.0
Signalez une erreur dans la description de la migration :
Si vous utilisez des formateurs :
Je reçois la même chose que @Carielle , j'essaierai ce que @HenryAlkire a dit
Quelle branche utilisez-vous ?
@rrecio Cela ne peut pas être .. J'ai corrigé cela comme il y a quelques jours.
J'utilisais la configuration normale de Cocopod : pod 'Charts'
Pour y remédier, j'ai supprimé l'entrée Podfile et lié Charts.framework manuellement comme @Henry l'a expliqué
Enviado do meu iPhone
Em 20 de set de 2016, à 21:59, Xuan [email protected] escreveu:
@rrecio Cela ne peut pas être .. J'ai corrigé cela comme il y a quelques jours.
-
Vous recevez ceci parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub ou coupez le fil de discussion.
Une idée de quand il sera disponible sur Cocoapods ?
Comment mettre à niveau les graphiques pour qu'ils fonctionnent avec Xcode 8.0 et Swift 3.0 à l'aide de Carthage ?
Lorsque je lance "carthage update", il tire toujours Charts 2.3.0. Mon fichier Cartfile est configuré pour utiliser la dernière version.
github "danielgindi/Graphiques"
mise à jour de $carthage
** Graphiques de clonage* * Résultat du clonage
** Clonage royaume-cacao* * Consulter les graphiques sur "v2.3.0"
@danielgindi
Ce serait génial si vous incluiez ces fonctionnalités.
1) graphique linéaire avec différentes formes de marqueurs
https://github.com/danielgindi/Charts/issues/1405
2) Capable d'ajouter une vue personnalisée à des emplacements spécifiques sur l'axe X. La personnalisation des couleurs d'arrière-plan est manquante dans la plupart des vues.
https://github.com/danielgindi/Charts/issues/1416
Carthage utilise la dernière version. Si vous voulez 3.0 (qui n'est pas encore sorti) utilisez github "danielgindi/Charts" "master"
Téléchargez le projet complet à l'aide de la branche principale, puis glissez-déposez Charts.xcodeproj , puis accédez à l'onglet Général et ajoutez Charts.framework sous Embedded Binaries après Clean and build afin que vous puissiez voir que toutes les erreurs ont disparu, essayez-le. au cas où vous auriez besoin d'aide, commentez-le, je vous aiderai. @petester42 @Huang-Libo
@HenryAlkire J'ai fait ce que vous avez suggéré et j'ai supprimé les graphiques de mon fichier pod et je l'ai fait glisser et déposé manuellement dans mon projet, et je l'ai ajouté en tant que binaire intégré. Cependant, lorsque j'essaie de construire le projet, j'obtiens toujours cette erreur :
dyld: Library not loaded: @rpath/libswiftCore.dylib
Reason: image not found
Il semble être référencé dans Charts.framework/Charts. Une idée de comment résoudre ce problème ?
J'ai résolu mon propre problème - mon projet est un projet Objective-C utilisant la bibliothèque Swift Charts, j'ai donc dû aller dans Paramètres de construction> Options de construction> "Toujours intégrer les bibliothèques Swift Standard" et le définir sur OUI. Cela remplace l'indicateur obsolète « Le contenu intégré contient Swift ».
@Carielle Peut également voir ce numéro https://github.com/danielgindi/Charts/issues/1487
@danielgindi Est-il possible d'estimer une sortie de Cocoa Pods pour les Charts 3 ? 1-2 semaines ou plus comme un mois ?
Merci pour vos efforts 👍
Vous pouvez utiliser les graphiques 3 avec les cocopodes dès maintenant en pointant sur la branche principale. Nous ne pouvons pas garantir que cela sera stable car ce n'est pas définitif.
@ petester42 Je fournis un pod de framework qui a une dépendance dans la spécification du pod aux graphiques. Malheureusement, vous ne pouvez pas pointer vers d'autres référentiels ou branches dans les spécifications de pod comme dans les fichiers de pod. Je pourrais écraser mon Podfile pour mon exemple de projet, mais ce n'est pas distribuable. Je suis donc bloqué pour l'instant sur Swift 2.2. Mais merci pour l'astuce :)
Mise à jour pour les autres utilisant les graphiques 3 avec Cocoapods
Je travaille sur la migration d'un projet de Swift 2.2 et Xcode 7 vers Swift 3.0 et Xcode 8.0. Suivant l'approche de @Carielle -- et comme @petester42 le mentionne ci-dessus -- les cartes 3 peuvent être installées avec des cocopodes.
Modification du podfile pour avoir :
pod 'Charts', :git => 'https://github.com/danielgindi/Charts.git', :branch => 'master'
a conduit à ce qui suit pour moi (1er octobre 2016)
Néanmoins, il y a encore quelques problèmes de temps de construction sur lesquels je travaille, comme il faut s'y attendre jusqu'à la sortie de la version finale.
Par exemple, plotView.xAxis.setLabelsToSkip(10)
cause des problèmes car la méthode setLabelsToSkip n'est plus reconnue. Puis-je supposer que cela est temporaire pendant que la version finale est en cours de travail, ou existe-t-il une autre méthode que je devrais utiliser ?
Merci @danielgindi et les autres pour votre excellent travail ! Je serais désireux d'aider à contribuer à la documentation de migration au fur et à mesure que j'apprends en adaptant mon propre projet.
Avant de mettre à jour le graphique iOS vers la version 3.0, je peux
let radarChartData = RadarChartData(xVals : dataPoints, dataSet : radarChartDataSet)
Cependant, après la mise à niveau, vous ne pouvez pas définir xVals dans RadarChartData, uniquement
laissez radarChartData = RadarChartData(dataSet: radarChartDataSet)
Comment puis-je définir xVals dans la dernière version. j'ai dû essayer de
dataEntry = RadarChartDataEntry(valeur : Double(cleaningValue), données : "setTitle" comme AnyObject ?)
mais pas de travail, j'avais recherché de nombreux documents, mais je ne trouve pas comment faire cela, pourriez-vous me donner un exemple pour cela, merci de me conseiller.
@AnChiChang, veuillez lire attentivement les notes ci-dessus.
merci, comprenez grâce au ticket 1496
comment puis-je formater les valeurs x d'un tableau double à un tableau de chaînes en v3.0 ?
@bingozb s'il vous plaît regardez les démos
var a:Double = 1.5
var b:Chaîne = Chaîne(format:"%f", a)
print("b: (b)") // b: 1.50000
@danielgindi J'utilise le graphique linéaire 1, et j'avais vu la démo et je n'avais rien trouvé à ce sujet.
NSMutableArray *values = [[NSMutableArray alloc] init];
[values addObject:[[ChartDataEntry alloc] initWithX:i y:val]] ;
LineChartDataSet *set1 = [[LineChartDataSet alloc] initW ithValues:values label:@"xxx"];
la démo utilise simplement des valeurs x doubles. ChartDataEntry n'a pas de méthode d'initialisation que je peux envoyer un paramètre de chaîne.
Eh bien, j'ai vu les problèmes et j'en ai trouvé un qui disait que nous pouvions envoyer les valeurs entières de la date, puis les reformater et les afficher sur l'étiquette x. Mais je ne trouve pas de méthode à ce sujet. Je ne suis pas sûr que cela puisse fonctionner de cette façon en fait.
aidez moi s'il vous plait. Je dois montrer la date à l'axe x.
Bonjour @bingozb
J'espère que vos valeurs X sont stockées dans un tableau, alors veuillez faire ce genre de,
NSMutableArray *xVals;
J'espère que vous êtes compris.
@rs10693 Oui, je trouve cette méthode de protocole. Il semble que je dois l'appliquer. Mais je trouve qu'aucun délégué n'était conforme au protocole IChartAxisValueFormatter. Qui doit se conformer à ce protocole et où mettre en œuvre cette méthode. Je laisse ma manette faire ça mais ça ne marche pas.
@bingozb Utilisez ChartViewDelegate et IChartAxisValueFormatter et j'espère que vous @import Charts;
@rs10693 Oh, je vois ! le délégué est valueFormatter ...
@bingozb que pouvez-vous dire que je ne comprends pas. s'il vous plaît m'élaborer.
@danielgindi je ne
L'erreur suivante se produit lors de l'exécution de pod install
Analyser les dépendances
[!] Incapable de satisfaire les exigences suivantes :
Charts (~> 3.0.0)
requis par Podfile
Aucune de vos sources de spécification ne contient une spécification satisfaisant la dépendance : Charts (~> 3.0.0)
.
Vous avez soit :
pod repo update
.Remarque : à partir de CocoaPods 1.0, pod repo update
ne se produit pas sur pod install
par défaut.
S'il vous plaît, aidez-vous, cela signifie-t-il que Charts 3.0.0 n'est pas encore publié à installer en utilisant
ou est-ce que je manque une étape.
3.0 n'est pas encore dans les cocopodes car ce n'est pas définitif. Vous pouvez pointer vers le dépôt git et le master pour obtenir la version 3.0 dès maintenant
Nous avons maintenant publié 3.0.0 !
C'est super à savoir.
Mais je suis un peu inquiet de devoir mettre à jour notre cabosse de cacao ou son référentiel pour installer la nouvelle version 3.0.0
woot
@danielgindi tu as besoin de moi pour pousser le pod ou tu as ça couvert?
Essayé, maintenant après un long moment, dit que le podspec ne valide pas...
Ouais ça prend du temps. Je peux le faire. Vous avez besoin de cocopods 1.1 pour travailler avec Xcode 8/swift 3
@petester42 @danielgindi
j'ai
pod --version
= 1.1.0
mais la commande pod install
installe toujours l'ancienne version.
Analyser les dépendances
Téléchargement des dépendances
Installing Charts (2.3.0)
S'il vous plaît guider
Cela fonctionne maintenant après la mise à jour du référentiel principal du pod merci pour l'aide
Obtenir une telle erreur dans Swift 3.0 , lors de l'implémentation de Bar Graph à l'aide de cette bibliothèque.
Après avoir résolu l'erreur ci-dessus, il donne l'erreur suivante comme indiqué ci-dessous.
Comment résoudre une telle erreur dans Swift 3.0 ?
let chartDataSet = BarChartDataSet (valeurs : dataEntries, étiquette : nil)
let chartData = BarChartData(dataSet: chartDataSet)
à propos de xVals, vous devez implémenter stringForValue.
Merci. comment dois-je implémenter stringForValue pour xVals.
Veuillez fournir rapidement 3 exemples
Bonjour,
Je viens de migrer du 2 au 3 (j'utilise le 3.0.2) et je rencontre 2 problèmes :
Merci de votre contribution.
en classe BarChartRenderer
en open override func drawValues(context: CGContext)
ajouter la ligne 408
```
si !dataSet.isStacked
{
pour j en 0 ..< Int(ceil(Double(dataSet.entryCount) * animator.phaseX))
{
garde laissez e = dataSet.entryForIndex(j) comme? BarChartDataEntry else { continuer }
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
```
ajoute une variable si tu veux
var drawValuesZeroEnabled : Bool { get set }
Merci Thierry.
Donc c'est corrigé :)
J'ai toujours le problème de cet espacement bizarre.
Je viens donc de créer un graphique à barres par défaut avec une valeur 0 et j'ai toujours le problème - j'ai essayé de me rapprocher le plus possible d'une simple barre pour voir quel était le problème.
Cela ressemble à la démo mais dès que je mets une valeur entre 0 et 0.9999 j'obtiens ce remplissage.
Voici l'exemple de code :
<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
}
Assez simple.
C'est un bug ?
Problème avec 0 :
Non 0 :
Merci pour l'aide ;)
Où puis-je trouver des documents sur l'ancienne API pour les graphiques ? Je n'ai jamais utilisé ce framework (à part le mettre à jour plusieurs fois) et je dois passer de 2.3 à 3.0.4, donc les anciens documents seraient bien pour comprendre l'ancien code, par exemple :
[entrySet addObject:[[ChartDataEntry alloc] initWithValue: item.avgSpeed xIndex:index]];
Maintenant, il n'y a pas d'init appelé initWithValue: xIndex
, mais plutôt un init appelé :
initWithX: y:
, j'essaie donc de comprendre quels étaient les anciens paramètres et comment utiliser le nouveau init pour obtenir le même résultat ...
De plus, le tableau valuesObjc est manquant maintenant :
//myLineChartView is LineChartView
NSDate* date = (NSDate*)[myLineChartView.xAxis.valuesObjc objectAtIndex:index];
Comme je l'ai dit, je n'ai jamais utilisé ce framework, donc de l'aide serait appréciée, ou au moins un lien vers les anciennes docs API serait utile...
Je ne pense pas qu'une telle ressource existe. Vous pouvez vérifier la branche legacy/2.3 pour vérifier les démos et autres par rapport aux autres versions actuelles.
BarChartData.init(xVals : xVals, dataSets : dataSets) ne peut pas fonctionner. qu'est-ce que le remplacer?
Comment puis-je faire défiler la valeur x du graphique linéaire vers le centre par programmation ?
Commentaire le plus utile
@Carielle Pour installer Charts 3.0.0 avant qu'il ne soit compatible avec CocoaPods, supprimez les anciens Charts de votre fichier pod et de votre projet, puis téléchargez le fichier Charts.xcodeproj depuis cette page github.
Ensuite, ouvrez votre projet cible dans XCode et faites glisser le fichier Charts.xcodeproj du répertoire dans lequel il a été téléchargé dans votre projet dans l'interface XCode.
Après cela, ajoutez Charts.framework dans la section "Embedded Binary" des paramètres généraux de votre projet.