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 回答