6


1

iPadでのMPMediaPickerControllerの向き

MPMediaPickerControllerの正しい方向を設定するにはどうすればよいですか?

shouldAutorotateToInterfaceOrientationでYESを返しましたが、Landscapeに悪いフレームがあります(MPMediaPickerControllerを最初にPortraitで表示する場合、逆の場合)。

私はデバイスを無秩序に回転させており、自分自身を修正するためにフレームを設定することもあります! 回転してフレームを設定する方法を見つけました-180度回転する必要があります。 たとえば、ポートレートに良いフレームがあり、ランドスケープに回転すると-悪いフレーム(Portataitから)がありますが、他のランドスケープに(180度に)回転すると、フレームがランドスケープに設定されます…​ どうして ?

常に正しい回転後にフレームを設定するにはどうすればよいですか?

について、

3 Answer


2


2010年に尋ねたので、このソリューションに興味があるかどうかはわかりません。 とにかく、ここで数回検索した後、私が見つけたものです:

  1. MPMediaPickerControllerは、横向きをサポートしていません。

  2. MPMediaPickerをランドスケープできれいに表示するために 向き、PopOverControllerを使用できます。 基本的に、ポップオーバーを作成し、ピッカーを挿入します。 PopOverControllerは、rootViewControllerから適切に表示されると、実際にデバイスの方向に従います。

大まかなコードは次のとおりです。 動作しますが、いくつかのクリーンアップが必要です。 おそらく、ポップオーバーがゼロかどうかを確認するのが一番良いでしょう。そうでなければ、ユーザーがボタンをタップするたびにポップオーバーが積み重なるでしょう。

- (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は、ツールバーバーボタンに関連付けられています。


0


私は単にそれをNavigation Controllerにプッシュするだけです:

MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny];

mediaPicker.delegate = self;
mediaPicker.allowsPickingMultipleItems = NO;
mediaPicker.prompt = @"Select songs...";

[[self navigationController]  pushViewController:mediaPicker animated:YES];

確かに、これはNavigation Controllerのコンテキストでのみ機能しますが、機能し、シンプルです!


-1


これは試してみることができるサンプルコードです。回転後、self.viewの中心にメディアパネルビューを設定する必要があります。ここにサンプルコードがあります…​ 最初にMediaPlayer Frameworkを追加する必要があります…​

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);

その後、ビューの中心に設定する必要があります。