2

iPhone のミュージック アプリの動作を再現したいと思います。そのアプリでアルバムを再生しているときに右上のボタンをタップすると、アルバム カバーが反転してUITableViewその後ろのトラックが表示されます。

カスタムでこれを達成することは可能UIStoryboardSegueですか?

それとも、同じコントローラーを使用する 2 つのビューを切り替えるのが最善の方法ですか?

4

2 に答える 2

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 です。

于 2012-02-27T21:51:43.413 に答える
0

私はこの課題を抱えており、ビューコントローラーを表示するカスタムセグエを使用して解決しました。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];

}
于 2014-05-21T08:33:10.260 に答える