2

いくつかの理由で、アプリを横向きモードでのみ動作するように制限していますが、奇妙なことに、アプリからiPodミュージックライブラリを開くと、常に縦向きモードでジャンプします。

次のコードを参照してください。システムのデフォルトの動作かどうか混乱していますか?ランドスケープモードで表示されるようにするにはどうすればよいですか(他のUIとの一貫性を保つ)?ありがとう。

- (IBAction)getMusic:(id)sender {
    MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeMusic];
    picker.delegate                     = self;
    picker.allowsPickingMultipleItems   = YES;
    picker.prompt                       = NSLocalizedString (@"Add songs to play",nil);

    [self presentModalViewController: picker animated: NO];
    [picker release];
}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        return UIInterfaceOrientationIsLandscape(interfaceOrientation);;
    } else {
        return YES;

    }
}
4

2 に答える 2

5

MPMediaPickerController のビューを、必要な方向をサポートするビュー コントローラーのビューに追加するだけです。(iOS 6.1 SDK でテスト済み)

mediaPickerController = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny];

mediaPickerController.delegate = self;
mediaPickerController.allowsPickingMultipleItems = NO;
mediaPickerController.prompt = @"Select songs to edit";

//[self presentViewController:mediaPicker animated:YES completion:^{}];
[self.view addSubview:mediaPickerController.view];

ここに画像の説明を入力

また、iOS 7 の場合、メディア ピッカーのフレームを次のように設定する必要があります。

mediaPickerController = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny];

mediaPickerController.delegate = self;
mediaPickerController.allowsPickingMultipleItems = NO;
mediaPickerController.prompt = @"Select a song to edit";

// in case of iOS 7
mediaPickerController.view.frame = CGRectMake(0, 0, 568, 320);

[self.view addSubview:mediaPickerController.view];

ここに画像の説明を入力

于 2013-05-27T14:06:09.427 に答える
1

MPMediaPickerController クラス リファレンスから:

注: MPMediaPickerController クラスは、縦向きモードのみをサポートします。このクラスはサブクラス化をサポートしています。このクラスのビュー階層はプライベートです。ビュー階層を変更しないでください。

回避策を説明する投稿がここ他の場所にありますが、私はそれらを保証することはできません.

于 2012-12-17T22:40:33.773 に答える