Erlauben das horizontale scrollen nur in der Kern-plot barchart?
Ich bin mit Kern-plot lib zeichnen Sie Balken-Diagramme in meiner app wie diese
Mein problem ist, dass ich will, dass die Aktivierung von grapgh Bewegung nur in horizontaler Richtung, so dass ich sehen kann, die Datensätze für eine lange Zeit, Aber das problem ist, dass ich nur wnt zu halten, die y-Achse fest auf seinem Platz,
Wie kann ich dies tun?
Warten auf Hilfe....
- Ich weiß nicht, warum Sie rollte wieder über meine Beiträge der letzten Zeit. Imgur ist viel schneller als FreeImageHosting.net,, die Zeiten heraus, Wann immer ich versuche, laden Sie das Bild als Teil dieser Seite.
InformationsquelleAutor Madhup Singh Yadav | 2009-12-12
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erst vor kurzem hat rudimentären Benutzerinteraktion aktiviert wurden in der Core-Plot-Diagramme. Zu aktivieren, scrollen in jede Richtung, können Sie die
allowsUserInteraction
Eigenschaft der Handlung Raum zu JA.Wir haben derzeit keine Möglichkeit, sperren, die die Bewegung auf eine Richtung. Die scrolling-action findet in der
-pointingDeviceDraggedAtPoint:
Methode auf CPXYPlotSpace, so dass Sie könnte Unterklasse CPXYPlotSpace, kopieren über die Durchführung dieser Methode, und ändern Sie es erlauben nur die Bewegung in X-Richtung. Noch besser, wir würden uns freuen, keine Beiträge an die Erweiterung der Funktionalität von CPXYPlotSpace hinzufügen von Unterstützung für die unidirektionale Bewegung.Wenn Sie mit Kern-Plot 0.2.2 oder höher (möglicherweise schon früher), dann können Sie eine Methode hinzufügen, die auf Ihrem Grundstück space delegieren, damit die folgenden:
Diese beschränken die Handlung Bewegung nur horizontal. Dies setzt Voraus, Sie haben erlaubt die Interaktion mit dem plot-Raum durch die Einstellung allowsUserInteraction = JA.
Limit scrollen, indem ein delegate (d.h., CPPlotSpaceDelegate) auf dem Grundstück Platz und implementieren die willChangePlotRangeTo Methode. Sie können andere Coole Dinge zur gleichen Zeit. Hier ist, wie ich die Anzeige einschränken Quadranten ein:
Finden Sie Unter: CPPlotSpace.h
Habe ich eine einfache Möglichkeit zum "deaktivieren" der vertikale scroll -
Für, minY und maxY ich die Werte, die ich dargestellt, wie die vertikalen Grenzen sind, was Sie sehen, so kann man nicht vertikal scrollen
Bei mir hat es geklappt, nachdem ich sah dein Thema, also wollte ich vervollständigen Sie Ihre Antworten mit mir
Mit CorePlot 1.0 -- Zu beschränken, scrolling nur horizontale und Skalierung als gut, ich implementiert die zwei CPTPlotSpaceDelegate Methoden: Methode von Steve Tranby mit einer modifizierten Methode vorgeschlagen, durch supperAly/edo42.
ich bin mit CorePlot 0.2.2
u können, müssen Sie CPPlotSpaceDelegate,CPLineStyleDelegate Protokolle zur Steuerung
und fügen (für CPLineStyleDelegate)
hält das system den ursprünglichen Bereich der y-Achse
Alles, was Sie zu tun haben, zu beheben, die y-Achse nach der Antwort 4 mit dem Kommentar, inkl. (
newRange.doublePrecisionLocation
ist jetztnewRange.locationDouble
) zu setzen, istplotSpace.globalYRange = plotSpace.yRange;
Dank supperAly
wenn mein interface implementiert "CPPlotSpaceDelegate" - Protokoll
und das Projekt kann nicht stattgegeben werden, in der Regel , und zeigt, dass:
your interface xxx doesn't implement 'CPLineStyleDelegate' protocol
, die mich verwirren.so ich fügen Sie die folgende Methode :
-(void)lineStyleDidChange:(CPLineStyle *)lineStyle { //empty }
für CPLineStyleDelegate und fügen Sie
<CPLineStyleDelegate>
zu meinem interface und die Probleme sind verschwunden.Der folgende code basiert auf Tom Donaldson Antwort und wurde getestet mit CorePlot 1.5.1:
Können Sie überschreiben die
Funktion in CPTXYPlotSpace und nehmen Sie alle den code im Zusammenhang mit der Freizügigkeit für die y-Achse.
@Andrew S: "ich bin immer" Zuweisung an schreibgeschützte Eigenschaft' auf
newRange.location = CPTDecimalFromFloat(0.0);"
Hatte ich das auch, und nach dem "CurvedScatterPlot" Beispiel in der Kern-Plot-Galerie-app, verwendet eine veränderbare Kopie des newRange in plotSpace:willChangePlotRangeTo:forCoordinate: ...
CPTMutablePlotRange *changedRange = [newRange mutableCopy];
changedRange.location = CPTDecimalFromCGFloat(0.0 F); dann übergibt aufbringen und ich changedRange in der if...else-block.