2010-02-03 21 views
24

Estoy tratando de eliminar el borde alrededor de un gráfico de trama núcleo en el iPhone, pero parece estar luchando por lo que debería ser simple en mi mente.Cómo eliminar el borde alrededor de un gráfico de núcleo-trama

Punteros, por favor!

+0

Lo siento si esto es una pregunta obvia pero lo que es un gráfico de trama principal? –

+0

Core Plot es una biblioteca para graficar en mac y en el iphone: http://code.google.com/p/core-plot/ – Grouchal

+1

Parece realmente útil. Gracias. –

Respuesta

78

Usted debe ser capaz de cero a cabo la borderLineStyle en PlotArea de la gráfica para eliminar la frontera:

graph.plotAreaFrame.borderLineStyle = nil; // don't draw a border 

También puede crear su propio tema, utilizando los en el marco como ejemplos, y simplemente no se establece borderLineStyle en eso.

+27

Si está utilizando un tema integrado, asegúrese de establecer borderLineStyle DESPUÉS de la llamada applyTheme, o se sobrescribirá. –

+2

¡Este comentario es de oro! ¡Gracias! Tenía un código de prueba y simplemente cambié temas con un botón. ¡Entonces todo se sobrescribió! –

+0

Solo para agregar a la respuesta de Brad. Agregue la línea mencionada en la respuesta después de aplicar el tema. Si lo agrega antes de eso, entonces no funcionará. –

4

Bien, me enteré de cómo hacerlo, ¡bastante simple!

CPLineStyle *borderLineStyle = [CPLineStyle lineStyle]; 
borderLineStyle.lineColor = [CPColor whiteColor]; 
borderLineStyle.lineWidth = 1.0; 

graph.plotArea.borderLineStyle = borderLineStyle; 

en el gráfico es su objeto gráfico - la razón por la que tenía un borde en el primer lugar era porque solía CPPlainWhiteTheme.

Espero que esto ayude a otros, ¿hay una mejor manera?

1

Puede establecer cualquier estilo de línea en nil. Esto hará que la línea no se dibuje en absoluto.

1

En CorePlot 1.0, la estructura de CPTGraph ha cambiado ligeramente. El código para la eliminación de la línea fronteriza de un gráfico, en el supuesto de que es de tipo GPTGraph o una subclase de CPTGraph, es

graph.plotAreaFrame.borderLineStyle = nil; 
8

Ninguna de las respuestas que funcionó para mí. Esto hizo el trabajo:

graph.paddingLeft = 0; 
graph.paddingRight = 0; 
graph.paddingTop = 0; 
graph.paddingBottom = 0; 
graph.plotAreaFrame.borderWidth = 0; 
graph.plotAreaFrame.cornerRadius = 0; 
1

La forma correcta con borderLineStyle = nil después applyTheme:

CPTGraph *graph = [[CPTXYGraph alloc] initWithFrame:hostView.bounds]; 

// Set padding for plot area 
[graph applyTheme:[CPTTheme themeNamed:kCPTPlainWhiteTheme]]; 
graph.plotAreaFrame.borderLineStyle = nil; 
1

Si, como yo, que busca no solo para eliminar la línea fronteriza, pero para hacer una gráfica que ocupa toda la vista de alojamiento, el answer de Thomas Johannesmeyer me puso en el camino correcto.

Aquí es lo que hice:

CPTGraphHostingView* hostingView = [[CPTGraphHostingView alloc] initWithFrame: frame]; 
CGRect bounds = hostingView.bounds; 

CPTGraph *graph = [[CPTXYGraph alloc] initWithFrame:bounds]; 
hostingView.hostedGraph  = graph; 

graph.paddingTop = CPTFloat(0.0); 
graph.paddingRight = CPTFloat(0.0); 
graph.paddingBottom = CPTFloat(0.0); 
graph.paddingLeft = CPTFloat(0.0); 

graph.plotAreaFrame.paddingTop = CPTFloat(0.0); 
graph.plotAreaFrame.paddingRight = CPTFloat(0.0); 
graph.plotAreaFrame.paddingBottom = CPTFloat(0.0); 
graph.plotAreaFrame.paddingLeft = CPTFloat(0.0); 
graph.plotAreaFrame.masksToBorder = NO; 

CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet; 
CPTXYAxis *x   = axisSet.xAxis; 
x.labelingPolicy  = CPTAxisLabelingPolicyNone; 
x.title = nil; 
CPTXYAxis *y   = axisSet.yAxis; 
y.labelingPolicy  = CPTAxisLabelingPolicyNone; 
y.title = nil; 
Cuestiones relacionadas