2010-02-25 9 views
10

iPhone/Objective-CiPhone subview Flip zwischen zwei Ansichten

Auf meiner Sicht ein wenig „schweben“ Ansicht erscheint, nachdem ein Benutzer auf eine Schaltfläche auf der Hauptansicht klickt. Wenn der Benutzer auf diese Unteransicht klickt, möchte ich die Unteransicht FlipFromRight in eine andere Ansicht (gleiche Größe). Die Hauptansicht darunter sollte bleiben.

viewHot und viewCold sind die Subviews viewMain die wichtigste ist.

Ist das möglich?

+0

ich verwendet habe, die folgende code..it arbeitet fine..but ein Problem .. ich eine Tableview in viewHot haben. Wenn "else" part ausgeführt wird, wird viewHot angezeigt. Aber coldView ist immer noch hinter der viewHot, also, wenn ich TableView auf Maximum oder Minimum scrolle, wird die ColdView gesehen .. irgendwelche Vermutungen? – Maulik

+0

Ich versuchte removeFromSuperView, versteckte = YES etc, aber kein Glück .. !!! – Maulik

Antwort

22

Erstellen Sie in viewMain eine weitere leere Ansicht mit dem Namen viewHover, und positionieren Sie sie an der Position, an der die Hover-Ansichten angezeigt werden sollen. Fügen Sie dann in IB entweder viewHot oder viewCold (nicht beide) als Unteransicht von viewHover hinzu.

Dann ein Verfahren wie folgt aufrufen, die Ansichten zu kippen:

-(void)flipViews 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:viewHover cache:YES]; 

    if ([viewHot superview]) 
    { 
     [viewHot removeFromSuperview]; 
     [viewHover addSubview:viewCold]; 
     [viewHover sendSubviewToBack:viewHot]; 
    } 
    else 
    { 
     [viewCold removeFromSuperview]; 
     [viewHover addSubview:viewHot]; 
     [viewHover sendSubviewToBack:viewCold]; 
    } 

    [UIView commitAnimations]; 
} 
+1

Das ist ausgezeichnet, vielen Dank –

+2

Dieser Code hat mir geholfen, eine kleine modale Ansicht zu präsentieren. Danke. – Sasho

+8

Nur ein FYI, mit den neuen Animationsblöcken kann die Animation einzeilig sein: [UIView transitionFromView: viewHot toView: viewCold duration: 1.f Optionen: UIViewAnimationOptionTransitionFlipFromLeft completion: nil]; – yuf