8

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

shouldAutorotateToInterfaceOrientationでYESを返しましたが、Landscapeのフレームが正しくありません(最初にPortraitでMPMediaPickerControllerを表示し、逆に表示した場合)。

デバイスを無秩序に回転させ、フレームを設定して自分自身を修正しました。回転してフレームを設定する方法を見つけました。180度回転する必要があります。たとえば、Portraitでフレームが良好な場合、Landscapeに回転すると(Portataitから)フレームが不良になりますが、他のLandscape(180度)に回転すると、フレームがLandscapeに設定されます...なぜですか?

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

よろしく、

4

3 に答える 3

3

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

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

  2. MPMediaPicker を横向きできれいに表示するために、PopOverController を利用できます。基本的に、ポップオーバーを作成し、そこにピッカーを挿入します。rootViewController から適切に表示された場合、PopOverController は実際にデバイスの向きに従います。

これが大まかなコードです。動作しますが、クリーンアップが必要です。おそらく、ポップオーバーが 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 は、ツールバーのボタンに関連付けられています。

于 2012-06-28T06:24:19.327 に答える
0

ナビゲーションコントローラーにプッシュするだけです。

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

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

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

確かに、これはナビゲーションコントローラーのコンテキストでのみ機能しますが、機能し、シンプルです。

于 2012-12-26T01:06:12.350 に答える
-1

これを試すことができるサンプルコードを次に示します。回転後、メディアプレーヤービューをself.viewの中央に設定する必要があります。ここにサンプルコード...最初に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);

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

于 2012-03-13T13:29:19.777 に答える