iOS 5 Storyboard可以复制音乐应用程序的专辑曲目视图

时间:2012-02-25 09:52:08

标签: ios ios5 uikit uistoryboard

我想复制iPhone音乐应用的行为。当您在该应用程序中播放专辑并点击右上角按钮时,相册封面会翻转以显示其背后的UITableView个曲目。

是否可以使用自定义UIStoryboardSegue完成此操作?

或者是在两个使用相同控制器的视图之间进行切换的最佳方式?

2 个答案:

答案 0 :(得分: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是你的UITable轨迹视图。

答案 1 :(得分:0)

我遇到了这个挑战并使用自定义segue解决了它以呈现视图控制器。只需根据UIStoryboardSegue创建一个新类。

这是我的自定义segue

.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

在界面构建器中选择segue并将Segue Class设置为自定义segue的nam。

第二个视图控制器包含以下用相同动画消除的内容:

- (IBAction)done:(id)sender {


    [UIView transitionWithView:self.navigationController.view
                      duration:0.50
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    animations:nil
                    completion:nil];
    [self.navigationController popViewControllerAnimated:NO];

}