2017-08-10 2 views
4

Comment afficher la légende de coreplot comme ceci?Légende Coreplot avec titre, étiquette de pays et sous cette ligne dans swift

drapeau du pays, le nom du pays sous cette ligne (ressemblait dans le graphique)

enter image description here func configureLegend() { garde laisse graphique = hostView.hostedGraph else {return}

let legend = CPTLegend(graph: graph) 
    graph.legend = legend 
    graph.legendAnchor = .topLeft 
    graph.legendDisplacement = CGPoint(x: 50.0, y: -2.0) 
    legend.fill = CPTFill(color: CPTColor.clear()) 
    legend.swatchSize = CGSize(width: 10.0, height: 10.0) 
    legend.numberOfRows = 1 
    legend.entryPaddingBottom = 12 
    let titleStyle = CPTMutableTextStyle() 
    titleStyle.color = CPTColor.black() 
    titleStyle.fontSize = 6.0 
    titleStyle.fontName = Font.NissanPro_Bold 
    legend.textStyle = titleStyle 
    legend.delegate = self 
} 
public func legend(_ legend: CPTLegend, shouldDrawSwatchAt idx: UInt, for plot: CPTPlot, in rect: CGRect, in context: CGContext) -> Bool{ 
    return false 
} 

Répondre

0

Si vous peut dessiner les drapeaux en utilisant emoji, faites cela. Insérer un caractère de nouvelle ligne (\n) dans le texte du titre pour positionner le texte sous le drapeau.

Si vous devez utiliser des graphiques personnalisés pour les indicateurs, utilisez une légende delegate et implémentez la méthode de délégation -legend:shouldDrawSwatchAtIndex:forPlot:inRect:inContext:. Dessinez le drapeau dans le contexte graphique donné dans le rectangle de l'échantillon et renvoyez NO pour indiquer à la légende que vous avez pris soin du dessin requis.

Pour placer le texte sous le graphique, agrandissez la taille de l'échantillon et dessinez les deux dans le rectangle de l'échantillon.

+0

Merci pour la réponse Eric. Mais ce qui est fait la mise en œuvre ci-dessus. cette ligne s'est déplacée vers le bas (au lieu du centre), pas sous le drapeau et le texte. – Marios

+0

Vous n'avez pas besoin d'utiliser la légende. Construisez la vue que vous voulez en utilisant des couches bordées de Plot Core (le drapeau peut être le 'fill' pour l'un d'entre eux) et un calque de texte. Attachez cette hiérarchie de calques au graphique sous la forme d'une annotation. –