iPhone のミュージック アプリの動作を再現したいと思います。そのアプリでアルバムを再生しているときに右上のボタンをタップすると、アルバム カバーが反転してUITableView
その後ろのトラックが表示されます。
カスタムでこれを達成することは可能UIStoryboardSegue
ですか?
それとも、同じコントローラーを使用する 2 つのビューを切り替えるのが最善の方法ですか?
iPhone のミュージック アプリの動作を再現したいと思います。そのアプリでアルバムを再生しているときに右上のボタンをタップすると、アルバム カバーが反転してUITableView
その後ろのトラックが表示されます。
カスタムでこれを達成することは可能UIStoryboardSegue
ですか?
それとも、同じコントローラーを使用する 2 つのビューを切り替えるのが最善の方法ですか?
同じView Controllerの2つのビューを切り替える方がおそらく簡単です。
- (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"; }];
}
ここで、tracksView はトラックの UITableView です。
私はこの課題を抱えており、ビューコントローラーを表示するカスタムセグエを使用して解決しました。UIStoryboardSegue に基づいて新しいクラスを作成するだけです。
これが私のカスタムセグエです
.h ファイル:
#import <UIKit/UIKit.h>
@interface BRTrackNotesSegue : UIStoryboardSegue
@end
.m ファイル
@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
インターフェイス ビルダーでセグエを選択し、セグエ クラスをカスタム セグエの名前に設定します。
2 番目のビュー コントローラーには、同じアニメーションで閉じる次のものが含まれています。
- (IBAction)done:(id)sender {
[UIView transitionWithView:self.navigationController.view
duration:0.50
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:nil
completion:nil];
[self.navigationController popViewControllerAnimated:NO];
}