UIView bringSubviewToFront: *nicht* bringen, Blick nach vorne

Ich bin die Implementierung einer einfachen iOS-Solitär-Spiel, das ermöglicht dem Benutzer, um die Karten zu ziehen um in der üblichen Weise. Die Karten sind vertreten mit dem UIView Unterklasse CardView. Die Karte Ansicht sind Geschwister, die Untersichten der SolitaireView. Der folgende Abschnitt versucht, "bringe eine Karte an die front", so dass es über alle anderen Ansichten als er gezogen wird:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
   UITouch *touch = [touches anyObject];
   if (touch.view.tag == CARD_TAG) {
      CardView *cardView = (CardView*) touch.view;
      ...
      [self bringSubviewToFront:cardView];
      ...
   }
}

Leider, die Karte ist z-Reihenfolge bleibt unverändert, während das ziehen. In den Bildern unten, ich bin das ziehen des Königs. Beachten Sie, wie ist es richtig auf der Oberseite der Neun im linken Bild, aber nicht korrekt unter den Beiden (unter den gesamten stack eigentlich) im rechten Bild:

UIView bringSubviewToFront: *nicht* bringen, Blick nach vorne

Ich habe auch versucht, ändern Sie die layer.zPosition Eigenschaft auch ohne Erfolg.
Wie kann ich die Kartenansicht auf der Vorderseite das beim ziehen? Ich bin verwirrt.

  • Ich entdeckte, dass bringSubviewToFront: löst die Ansicht 'needsLayout' - flag gesetzt werden. Meine layoutSubviews Methode auch aufrufen bringSubviewToFront: kehren so alle der Ansicht z-Bestellungen wieder in Ihren ursprünglichen Zustand!
  • Dann, was ist die Lösung dafür? Ich bin auch mit der gleichen Art von Anforderungen, von wo aus der Liste der Karten, wenn ich wählen Sie die Mitte, um Karte, sollte es kommen, dann kommen Sie nach vorne. aber meine animation nicht funktioniert, weil der bringSubviewToFront: Methode
  • Wenn Sie den stick mit UIView-Unterklassen, dann müssen Sie markieren Sie die Karte, die gezogen wird, so dass layoutSubviews können es auf die Oberseite. Habe ich eigentlich eingeschaltet, um mit CALayers, wie unten erwähnt.
  • Vielen Dank für Ihre Antwort. Kannst du bitte den code für, die.
  • Ein code-snippet ist unten aufgeführt.
  • Source-code nun im github.com/wcochran/solitaire-iOS

InformationsquelleAutor wcochran | 2012-04-04
Schreibe einen Kommentar