IOS 如何让 MPMediaPickerController 只在横向模式下出来?

jia*_*hua 2 ios landscape-portrait

由于某些原因,我限制我的应用程序只能在横向模式下工作,但奇怪的是,当我从我的应用程序打开 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;

    }
}
Run Code Online (Sandbox Code Playgroud)

alo*_*nes 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];
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

此外,在 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];
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明