MPMediaPickerController ориентация на iPad - PullRequest
6 голосов
/ 10 сентября 2010

Как мне установить правильную ориентацию MPMediaPickerController?

Я вернул ДА в shouldAutorotateToInterfaceOrientation, но у меня плохая рамка для Пейзажа (если сначала показать MPMediaPickerController в Portrait, и наоборот).

Я хаотично вращал свое устройство, а иногда устанавливал кадр, чтобы исправить себя! Я нашел способ установить кадр, вращая - нужно повернуть на 180 градусов. Например, если у вас есть хороший кадр в «Портрете», когда вы поворачиваете в «Пейзаж» - у вас плохой кадр (из Portatait), но если вы поворачиваете в другой пейзаж (до 180 градусов), тогда для кадра устанавливается «Пейзаж» ... Почему?

Как правильно установить кадр после поворота?

С уважением,

Ответы [ 3 ]

2 голосов
/ 28 июня 2012

Не уверен, интересует ли вас решение или нет, так как вы спросили об этом в 2010 году. В любом случае, после нескольких поисков я нашел следующее:

  1. MPMediaPickerController НЕ ПОДДЕРЖИВАЕТЛАНДШАФТНАЯ ОРИЕНТАЦИЯ.

  2. Для того, чтобы MPMediaPicker красиво отображался в альбомной ориентации, мы можем использовать PopOverController.По сути, мы создаем всплывающее окно и вставляем в него сборщик.PopOverController, при правильном отображении из rootViewController, действительно будет следовать ориентации устройства.

Вот примерный код.Это работает, но нуждается в некоторой очистке.Вероятно, лучше всего проверить, является ли всплывающее окно нулевым или нет, иначе оно будет просто складываться в себя каждый раз, когда пользователь нажимает на кнопку.

- (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 привязан к панели инструментовБарная кнопка.

0 голосов
/ 26 декабря 2012

Я просто помещаю его на свой контроллер навигации:

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

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

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

Конечно, это работает только в контексте контроллера навигации, но работает и просто!

0 голосов
/ 13 марта 2012

вот пример кода, который вы можете попробовать один раз, после поворота вы должны установить представление медиа-плейера в центре self.view, здесь пример кода ... сначала вы должны добавить MediaPlayer Framework ....

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

после этого мы должны установить центр обзора.

...