【问题标题】:iOS 5 Storyboard segue to replicate the Music app's album tracks viewiOS 5 Storyboard segue 复制音乐应用的专辑曲目视图
【发布时间】:2012-03-15 14:58:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios ios5 uikit uistoryboard


    【解决方案1】:

    在同一个视图控制器的两个视图之间切换可能更简单,例如

    - (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。

    【讨论】:

    • 对,这就是我最终所做的。我希望使用两个不同的视图控制器并在它们之间拆分逻辑。这是有问题的,所以我最终为播放器视图和 UITableView 使用了相同的控制器。这使得故事板变得更加困难,因为我现在必须在同一个场景中处理多个图层。
    【解决方案2】:

    我遇到了这个挑战,并使用自定义 segue 来呈现视图控制器来解决它。只需基于 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
    

    在界面生成器中选择 segue 并将 Segue Class 设置为自定义 segue 的名称。

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

    - (IBAction)done:(id)sender {
    
    
        [UIView transitionWithView:self.navigationController.view
                          duration:0.50
                           options:UIViewAnimationOptionTransitionFlipFromLeft
                        animations:nil
                        completion:nil];
        [self.navigationController popViewControllerAnimated:NO];
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 2021-06-21
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多