2010-11-19 11 views
1

Allgemein weiß ich, dass es Problemumgehungen dafür gibt, aber gibt es im iOS SDK eine einfache Möglichkeit, eine Superview zu verbergen, ohne ihre Unteransichten zu verbergen?Verbergen einer Superansicht, ohne die Unteransichten zu verbergen

Ich habe eine Elternansicht, die ein Hintergrund für ein paar andere Ansichten ist. Ich möchte den Elternteil ausblenden, indem ich entweder seine Transparenz auf 0 setze oder "versteckt" oder etwas - das Problem ist, dass sich diese Änderungen auf alle Unteransichten des Elternteils auswirken.

Wieder ist mir klar, dass es normalerweise einen Weg gibt, aber in diesem Fall habe ich es mit einem mapView zu tun, und meine Subviews sind Annotationen und Overlays.

Danke, -Matt

Antwort

1

aktualisieren

Ja, ein MKMapView werden mehrere Schichten darin mit Rendering haben, so background nicht funktionieren Einstellung. Sie könnten MKMapView als Unterklasse verwenden, um eine Eigenschaft hinzuzufügen, mit der diese Layer ein-/ausgeschaltet werden können (durch Entfernen/erneutes Hinzufügen zu der Ansicht). Dies scheint jedoch ziemlich gefährlich zu sein.

Sie könnten versuchen, die "clipsSubviews" von MKMApView auf NO/FALSE zu setzen und den Frame auf 0,0,0,0 zurückzusetzen. Dies hat jedoch Auswirkungen auf Ihre Fähigkeit, Touch-Ereignisse in Ihre Unteransichten zu übertragen.

Es ist wahrscheinlich eine bessere Lösung, um Ihre Ansichtshierarchie neu zu bewerten. Machen Sie es so etwas wie:

main-view 
    map-view 
    transparent-view 
    control-1 
    control-2 
    etc. 

Original-

Stellen Sie die Backgroundcolor auf [UIColor Clear]

+0

Ich glaube, ich sollte klar sein - diese spezifische Situation mit MKMapView als der übergeordneten Ansicht handelt. Es scheint nicht, dass Sie nur die Hintergrundfarbe deaktivieren können - nichts passiert wirklich :( – mag725

+0

Ich sehe. Ich werde meine Antwort aktualisieren. – TomSwift