Permettre le défilement horizontal que dans le noyau de l'intrigue barchart?
Je suis à l'aide de base-parcelle lib pour dessiner des graphiques à barres dans mon application, comme ce
Mon problème est que je veux que l'activation de grapgh mouvement uniquement dans le sens horizontal, de sorte que je peux voir les dossiers pendant une longue période de temps, Mais le problème est que je viens de wnt pour garder l'axe des y fixe à sa place,
Comment puis-je faire cela?
D'attente pour obtenir de l'aide....
Je ne sais pas pourquoi vous restaurée mon edit dernière fois. Imgur est beaucoup plus rapide que FreeImageHosting.net qui fois à chaque fois que j'essaie de charger l'image dans le cadre de cette page.
OriginalL'auteur Madhup Singh Yadav | 2009-12-12
Vous devez vous connecter pour publier un commentaire.
N'est que récemment que rudimentaire interaction de l'utilisateur activé dans le Noyau de Tracer des graphiques. Pour activer le défilement dans n'importe quelle direction, vous pouvez définir la
allowsUserInteraction
de propriété de la parcelle de l'espace pour OUI.Nous n'avons actuellement pas de moyen de verrouillage pour que le mouvement dans une seule direction. Le défilement de l'action prend place dans le
-pointingDeviceDraggedAtPoint:
méthode sur CPXYPlotSpace, de sorte que vous pourrait sous-classe CPXYPlotSpace, copie de sa mise en œuvre de cette méthode, et la modifier pour seulement permettre le mouvement dans la direction X. Mieux encore, nous vous serions reconnaissants des contributions pour étendre les fonctionnalités de la CPXYPlotSpace pour ajouter le support pour unidirectionnelle mouvement.est-il intégré dans le support ajouté pour cela encore, ou pas?
OriginalL'auteur Brad Larson
Si vous utilisez le Noyau de l'Intrigue 0.2.2 ou plus (peut-être plus tôt), alors vous pouvez ajouter une méthode dans la parcelle de l'espace de la délégué pour gérer les éléments suivants:
Cela permettra de limiter le mouvement parcelle à l'horizontale seulement. Cela suppose que vous avez a permis d'interagir avec l'intrigue de l'espace en définissant allowsUserInteraction = OUI.
Fonctionne très bien sur les CorePlot v1.1
Encore des travaux sur la 1.4
Super réponse! Fonctionne comme un charme!!!
OriginalL'auteur Steve Tranby
Limiter le défilement par la fixation d'un délégué (c'est à dire, CPPlotSpaceDelegate) sur la parcelle de l'espace et de mettre en œuvre la willChangePlotRangeTo méthode. Vous pouvez faire d'autres choses cool en même temps. Voici comment j'ai limite l'affichage à un quadrant:
Voir: CPPlotSpace.h
newRange.doublePrecisionLength est maintenant newRange.lengthDouble
Je suis de cession de propriété en lecture seule sur: newRange.emplacement = CPTDecimalFromFloat(0.0);
J'ai ajouté de la mise à jour du code qui fonctionne avec CorePlot 1.5.1 ici: stackoverflow.com/a/24525631/607
OriginalL'auteur Tom Donaldson
J'ai utilisé un simple moyen de "désactiver" le défilement vertical
MinY et maxY j'ai mis les valeurs qui me sont affichés que les limites verticales sont ce que vous voyez, vous ne pouvez donc pas de défilement verticale
Cela a fonctionné pour moi, après, j'ai vu votre sujet, j'ai donc voulu compléter vos réponses avec la mienne
OriginalL'auteur ciwol
À l'aide de CorePlot 1.0 -- Pour limiter le défilement à l'horizontale et à la mise à l'échelle en tant que bien, j'ai mis en place les deux CPTPlotSpaceDelegate méthodes: la méthode par Steve Tranby une modification de la méthode suggérée par supperAly/edo42.
Vous êtes l'homme... Merci pour la merveilleuse réponse de Jay... 🙂 Voté jusqu'
OriginalL'auteur Jay
je suis en utilisant CorePlot 0.2.2
u devrez ajouter CPPlotSpaceDelegate,CPLineStyleDelegate protocoles à votre contrôleur
et ajouter (pour CPLineStyleDelegate)
le système permettra de garder l'aire de répartition d'origine de l'axe des y
OriginalL'auteur supperAly
Tout ce que vous avez à faire pour résoudre le problème de l'axe y, après avoir répondu à 4 avec le commentaire incl. (
newRange.doublePrecisionLocation
est maintenantnewRange.locationDouble
) est de définirplotSpace.globalYRange = plotSpace.yRange;
OriginalL'auteur Abhi
grâce à supperAly
quand mon interface de mise en œuvre des "CPPlotSpaceDelegate" protocole
et le projet ne peut pas être respecté normalement , et montre que:
your interface xxx doesn't implement 'CPLineStyleDelegate' protocol
, qui me font confondre.j'ajoute donc la méthode :
-(void)lineStyleDidChange:(CPLineStyle *)lineStyle { //empty }
pour CPLineStyleDelegate et ajouter
<CPLineStyleDelegate>
à mon interface et les problèmes ont disparu.OriginalL'auteur xiaonan
Le code suivant est basé sur Tom Donaldson répondre et a été testé avec CorePlot 1.5.1:
OriginalL'auteur Anh Do
Vous pouvez remplacer le
fonction dans CPTXYPlotSpace et de prendre tout le code liées à la circulation pour l'axe y.
OriginalL'auteur Rex
@Andrew S: "je suis l'attribution de la propriété en lecture seule" sur
newRange.emplacement = CPTDecimalFromFloat(0.0);"
Je l'avais, aussi, et, à la suite de la "CurvedScatterPlot" par exemple dans le Noyau de l'Intrigue application galerie, utilisé une mutable copie de newRange dans plotSpace:willChangePlotRangeTo:forCoordinate: ...
CPTMutablePlotRange *changedRange = [newRange mutableCopy];
changedRange.emplacement = CPTDecimalFromCGFloat(0.0 F); puis passe à rassembler et j'ai utilisé changedRange dans le bloc if...else.
OriginalL'auteur Nick Staresinic