Lo storyboard iOS 5 seguono per replicare la vista dell'album dell'app musicale
-
12-11-2019 - |
Domanda
Vorrei replicare il comportamento dell'app musicale dell'iPhone. Quando stai suonando un album in quell'app e tocchi il pulsante in alto a destra, la copertina dell'album si sposta per mostrare un UITableView
di brani dietro di esso.
È possibile raggiungere questo obiettivo con un'usanza UIStoryboardSegue
?
O è il modo migliore solo per capovolgere tra due viste che usano lo stesso controller?
Soluzione
Probabilmente è più semplice capovolgere tra due viste dello stesso controller di visualizzazione, ad esempio
- (IBAction)showTracksView
{
[UIView transitionWithView:self.view
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{ tracksView.hidden = NO; }
completion:^(BOOL finished){ self.navigationItem.title = @"Tracks"; }];
}
- (IBAction)hideTracksView
{
[UIView transitionWithView:self.view
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{ tracksView.hidden = YES; }
completion:^(BOOL finished){ self.navigationItem.title = @"Album cover"; }];
}
Dove TrackSview è la tua UableView delle tracce.
Altri suggerimenti
Ho avuto questa sfida e l'ho risolta usando un seguito personalizzato per presentare il controller di visualizzazione. Basta creare una nuova classe basata su UistoryBoardSegue.
Ecco il mio seguito personalizzato
.h file:
#import <UIKit/UIKit.h>
@interface BRTrackNotesSegue : UIStoryboardSegue
@end
.m File
@implementation BRTrackNotesSegue
- (void) perform {
UIViewController *src = (UIViewController *) self.sourceViewController;
UIViewController *dst = (UIViewController *) self.destinationViewController;
[UIView transitionWithView:src.navigationController.view duration:0.50
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
[src.navigationController pushViewController:dst animated:NO];
}
completion:NULL];
}
@end
Nel Builder Interface Seleziona il Segue e imposta la classe Segue sul NAM del tuo seguito personalizzato.
Il Controller di Second View contiene quanto segue per licenziare con la stessa animazione:
- (IBAction)done:(id)sender {
[UIView transitionWithView:self.navigationController.view
duration:0.50
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:nil
completion:nil];
[self.navigationController popViewControllerAnimated:NO];
}