Ich verwende core-plot lib, um Balkendiagramme in meiner App so zu zeichnen
Mein Problem ist, dass ich die Grapgh-Bewegung nur in horizontaler Richtung aktivieren möchte, so dass ich die Aufzeichnungen für eine lange Zeit sehen kann. Aber das Problem ist, dass ich einfach die y-Achse an ihrem Platz fixiere.
Wie kann ich das tun?
Warten auf Hilfe ....
Erst kürzlich wurde die rudimentäre Benutzerinteraktion in Core Plot-Diagrammen aktiviert. Um das Scrollen in eine beliebige Richtung zu ermöglichen, können Sie die Eigenschaft allowsUserInteraction
des Zeichnungsbereichs auf YES setzen.
Gegenwärtig haben wir keine Möglichkeit, diese Bewegung in eine Richtung zu sperren. Die Scrolling-Aktion findet in der Methode -pointingDeviceDraggedAtPoint:
auf CPXYPlotSpace statt, so dass Sie CPXYPlotSpace unterklassen können, die Implementierung dieser Methode kopieren und so ändern, dass nur Bewegung in X-Richtung möglich ist. Noch besser, wir würden uns über jeden Beitrag freuen, der die Funktionalität des CPXYPlotSpace erweitert, um Unterstützung für unidirektionale Bewegungen hinzuzufügen.
Wenn Sie Core-Plot 0.2.2 oder höher (möglicherweise früher) verwenden, können Sie eine Methode für den Delegaten Ihres Plot-Bereichs hinzufügen, um Folgendes zu behandeln:
%Vor%Dadurch wird die Bewegung des Diagramms auf nur horizontal beschränkt. Dies setzt voraus, dass Sie die Interaktion mit dem Zeichenbereich zugelassen haben, indem Sie lensUserInteraction = YES setzen.
Begrenzen Sie das Scrollen, indem Sie einen Delegaten (d. h. CPPlotSpaceDelegate) für den Zeichenbereich festlegen und die Methode "willChangePlotRangeTo" implementieren. Sie können andere coole Dinge gleichzeitig tun. So beschränke ich die Anzeige auf Quadrant eins:
%Vor%Siehe: CPPlotSpace.h
Ich habe einen einfachen Weg benutzt, um den vertikalen Bildlauf zu deaktivieren
%Vor%Für, minY und maxY gebe ich die Werte ein, die ich angezeigt habe, so wie die vertikalen Grenzen, die Sie sehen, so dass Sie nicht vertikal scrollen können
Es funktionierte für mich, nachdem ich dein Thema gesehen hatte, also wollte ich deine Antworten mit mir vervollständigen
Danke an SupperAly
wenn meine Schnittstelle das "CPPlotSpaceDelegate" -Protokoll implementiert
und das Projekt kann nicht normal befolgt werden und zeigt Folgendes:
your interface xxx doesn't implement 'CPLineStyleDelegate' protocol
, die mich verwirren lassen.
also füge ich die Methode hinzu: -(void)lineStyleDidChange:(CPLineStyle *)lineStyle { //empty }
für CPLineStyleDelegate und fügen Sie <CPLineStyleDelegate>
zu meiner Schnittstelle hinzu und die Probleme sind weg.
Der folgende Code basiert auf Tom Donaldsons Antwort und wurde mit CorePlot 1.5.1 getestet:
%Vor%@Andrew S: "Ich bekomme" Zuweisung zur schreibgeschützten Eigenschaft "auf newRange.location = CPTDecimalFromFloat (0.0); "
Ich hatte das auch und habe nach dem Beispiel "CurvedScatterPlot" in der Core-Plot-Galerie-App eine veränderbare Kopie von newRange in plotSpace verwendet: willChangePlotRangeTo: forCoordinate: ...
CPTMutablePlotRange * changedRange = [neueRange mutableCopy];
changedRange.location = CPTDecimalFromCGFloat (0.0F); dann passiert muster und ich benutze changedRange im if ... else block.
Tags und Links iphone cocoa-touch core-plot core-graphics bar-chart