IOS如何让MPMediaPickerController只以横向模式出现?

时间:2012-11-08 01:49:00

标签: ios landscape-portrait

由于某些原因,我限制我的应用程序仅在横向模式下工作,但奇怪的是当我从我的应用程序打开iPod音乐库时,它总是以纵向模式跳出。

看到下面的代码,我很困惑它是否是系统默认行为?如何告诉它以横向模式出现(与其他用户界面保持一致)?谢谢。

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

    }
}

2 个答案:

答案 0 :(得分:2)

只需将MPMediaPickerController的视图添加到viewcontroller的视图中,该视图支持您想要的方向。 (在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];

enter image description here

此外,对于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];

enter image description here

答案 1 :(得分:1)

来自MPMediaPickerController类参考:

  

注意:MPMediaPickerController类仅支持纵向模式。   这个类确实支持子类化。此类的视图层次结构   是私人的;不要修改视图层次结构。

有帖子hereelsewhere描述了解决方法,但我无法保证。