2012-06-27 18 views
8

Mam wykres z osiami Y i X narysowanymi na domyślnej powierzchni wydruku wraz z głównym wykresem, a następnie mam osobne powierzchnie działek dla wykresów pomocniczych, każdy z ich własnymi osiami Y (oś X jest taka sama dla wszystkich działki).Podstawowa fabuła: Jak ukryć fabułę, oś i etykiety?

Wprowadzam przyciski do włączania i wyłączania wykresów pomocniczych i chciałbym, aby obejmowało ono w zasadzie całą powierzchnię wykresu (wykres, niestandardową oś y i etykiety niestandardowej osi y). Wydaje się, że nie ma żadnej "ukrytej" właściwości przestrzeni fabuły, a wszystkie trudne wątki i osie mają "ukryte" właściwości, ustawienie ich na "TAK" pozostawia widoczne etykiety osi.

  • Jaki jest najlepszy sposób, aby całkowicie ukryć zawartość powierzchni wydruku bez powodowania więcej przerysowywania niż to konieczne?

Sądzę, że jednym ze sposobów może być całkowite usunięcie wykresu i wykresu z wykresu, ale to nie jest intuicyjne.

+0

spróbuj ustawić 'graph.axisSet = nil;' –

+0

To by usunąć wszystkie osie na wykresie, chciałbym tylko, aby ukryć oś/osie związane z działek pomocniczych. Domyślam się, że jednym z rozwiązań jest utrzymywanie odniesień do wszystkich osi i ponowna konfiguracja osi wykresu, jak sugerujesz (pomijając osie, które powinny być ukryte), ale to wygląda jak włamanie :) – Setomidor

+0

Tak, to na pewno jest praca około :) –

Odpowiedz

6

można również ustawić wszystkie etykiety ukryte

CPTAxis *axis = someAxis; 
hidden = YES; 

axis.hidden = hidden; 
for (CPTAxisLabel *axisLabel in axis.axisLabels) { 
    axisLabel.contentLayer.hidden = hidden; 
} 
6

Ustaw hidden na YES na osi, którą chcesz ukryć. Jeśli używasz etykiet niestandardowych (zasady dotyczące etykiet CPTAxisLabelingPolicyNone), po prostu ustaw axisLabels na nil. Ustaw nowe etykiety, gdy chcesz, aby pojawiły się ponownie. W przypadku pozostałych zasad dotyczących etykiet ustaw opcję labelFormatter na nil, aby ukryć etykiety i przypisać poprawny formater, gdy chcesz, aby były widoczne.

6

Można ustawić wszystkie osie jako ukryty na poziomie axisSet, a można też ukryć etykiety przypisując politykę etykietowania CPTAxisLabelingPolicyNone do osi. To rozwiązanie działa dobrze dla mnie:

CPTXYAxisSet *axisSet = (CPTXYAxisSet *) self.graphHostingView.hostedGraph.axisSet; 
axisSet.hidden = YES; 

CPTAxis *y = axisSet.yAxis; 
y.labelingPolicy = CPTAxisLabelingPolicyNone; 

CPTXYAxis *x = axisSet.xAxis; 
x.labelingPolicy = CPTAxisLabelingPolicyNone; 
+0

Najlepiej dodać wyjaśnienie za pomocą kodu, który podasz w odpowiedzi. –

+0

Dzięki Ollie; Dodałem trochę wyjaśnienia. – Dan