【问题标题】:MPMediaPickerController orientation on iPadiPad 上的 MPMediaPickerController 方向
【发布时间】:2010-09-10 18:42:34
【问题描述】:

如何设置 MPMediaPickerController 的正确方向?

我在 shouldAutorotateToInterfaceOrientation 中返回 YES,但我的横向框架不好(如果先在纵向中显示 MPMediaPickerController,反之亦然)。

我一直在混乱地旋转我的设备,并且有时会设置框架来纠正自己! 我找到了通过旋转设置框架的方法 - 需要旋转到 180 度。 例如,如果您在纵向中有良好的框架,当您旋转到横向时 - 您的框架不好(来自 Portatait),但如果您旋转到其他横向(到 180 度),则框架设置为横向... 为什么?

如何在旋转后始终正确设置框架?

问候,

【问题讨论】:

    标签: iphone ipod mpmediapickercontroller


    【解决方案1】:

    不确定您是否对该解决方案感兴趣,因为您在 2010 年问过这个问题。 无论如何,经过几次搜索后,我发现了:

    1. MPMediaPickerController 不支持横向。

    2. 为了使 MPMediaPicker 在横向上看起来很好,我们可以使用 PopOverController。基本上,我们创建一个弹出窗口,并将选择器插入其中。 PopOverController,当从 rootViewController 正确显示时,确实会跟随设备的方向。

    这是粗略的代码。它可以工作,但需要一些清理。最好你检查一下 弹出框是否为 nil,否则每次用户点击按钮时它都会自行叠加。

    - (IBAction)showMediaPicker:(id)sender
    {
    
        MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny];
    
        mediaPicker.delegate = self;
        mediaPicker.allowsPickingMultipleItems = YES;
        mediaPicker.prompt = @"Select musics...";
    
    
        UIPopoverController *colorPickerPopover = [[[UIPopoverController alloc] 
                                        initWithContentViewController:mediaPicker] retain];               
        [colorPickerPopover presentPopoverFromBarButtonItem:sender 
                                        permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];    
    
    }
    

    再注意一点:此 IBAction 与工具栏按钮绑定。

    【讨论】:

      【解决方案2】:

      我只是将它推到我的导航控制器上:

      MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny];
      
      mediaPicker.delegate = self;
      mediaPicker.allowsPickingMultipleItems = NO;
      mediaPicker.prompt = @"Select songs...";
      
      [[self navigationController]  pushViewController:mediaPicker animated:YES];
      

      当然,这仅适用于导航控制器的上下文,但它有效且简单!

      【讨论】:

        【解决方案3】:

        这里有一些示例代码,你可以尝试一下,旋转后你必须在 self.view 的中心设置 media palyer 视图,这里有一些示例代码......你必须首先添加 MediaPlayer 框架......

        NSString* moviePath = [[NSBundle mainBundle] pathForResource:@"PATRON_LOGO_3" ofType:@"mp4"];
        NSURL* movieURL = [NSURL fileURLWithPath:moviePath];
         MPMoviePlayerController *playerCtrl =  [[MPMoviePlayerController alloc]initWithContentURL:movieURL];
        playerCtrl.scalingMode = MPMovieScalingModeFill;
        playerCtrl.controlStyle = MPMovieControlStyleNone;
        [playerCtrl.view setCenter:CGPointMake(240, 160)];
        [playerCtrl.view setTransform:CGAffineTransformMakeRotation(M_PI/2)];
        playerCtrl.view.frame = CGRectMake(0, 0, 320, 480);
        [self.view addSubview:playerCtrl.view];
        [playerCtrl play];
        

        我认为它工作正常,这是用于纵向的横向模式,我们必须根据纵向框架设置框架..

        playerCtrl.view.frame = CGRectMake(0, 0, 480, 320);

        之后我们必须设置到视野中心。

        【讨论】:

        • 这与问题无关。该问题要求 MPMediaPickerController,而不是 MPMoviePlayerController。它们是两种不同的东西。并且 MPMediaPickerController 没有 transform 属性。
        • @Rocotilos 选择器可能不会,但选择器视图会,例如:MPMediaPickerController.view.transform
        猜你喜欢
        • 2016-04-30
        • 1970-01-01
        • 2018-04-20
        • 2012-01-30
        • 1970-01-01
        • 2011-03-14
        • 1970-01-01
        • 2011-10-22
        • 1970-01-01
        相关资源
        最近更新 更多