Воспроизведение видео на экране нестандартного размера - просмотр в iPhone - PullRequest
2 голосов
/ 14 сентября 2009

Предположим, пользователь нажимает на кнопку, и видео начинает воспроизводиться. Теперь, когда воспроизводится видео, оно всегда в полноэкранном режиме.

Видео должно воспроизводиться в портретном режиме (но обычно видео воспроизводится в альбомном режиме). Как я могу это сделать?

Ответы [ 5 ]

6 голосов
/ 10 апреля 2010

Просто обновление, последний iPhone SDK 3.2+ теперь позволяет программистам показывать видео в любом желаемом размере и ориентации, предоставляется новый MPMoviePlayerView, который является свойством MPMoviePlayerController, в этом представлении будет видео, которое можно добавить в качестве подпредставления для вашего представления.

3 голосов
/ 13 марта 2010
@interface MPMoviePlayerController (extend) 
 -(void)setOrientation:(int)orientation animated:(BOOL)value; 
@end 

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieUR]; 
[moviePlayer setOrientation:UIDeviceOrientationPortrait animated:NO]; 
if (moviePlayer) 
{ 
    [self.moviePlayer play]; 
} 

Это решение будет отклонено Apple, поскольку setOrientation для проигрывателя фильмов является частным API. Вы должны быть осторожны, но это может работать на iPhone от Jailbroke.

1 голос
/ 22 июня 2010

Вот что я сделал. Добавьте NSNotification, чтобы уведомить вас о завершении загрузки видео.

- (void)playVideoUrl:(NSString *)videoUrl {
    NSURL *url = [NSURL URLWithString:videoUrl];
    MPMoviePlayerController* theMovie=[[MPMoviePlayerController alloc]   
             initWithContentURL:url]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 

    //MPMoviePlayerContentPreloadDidFinishNotification
    [[NSNotificationCenter defaultCenter] addObserver:self                           
                       selector:@selector(myMovieFinishedPreloading:)                                            
                           name:MPMoviePlayerContentPreloadDidFinishNotification                                                
                         object:theMovie]; 


    // Movie playback is asynchronous, so this method returns immediately. 
    [theMovie play]; 
     }

Селектор обратного вызова:

-(void)myMovieFinishedPreloading:(NSNotification*)aNotification  {
    NSArray *windows = [[UIApplication sharedApplication] windows];

    UIWindow *moviePlayerWindow = nil;
    if ([windows count] > 1) 
    {
        moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
    }

    CGAffineTransform transform = CGAffineTransformMakeScale(0.5, 0.5);
    transform = CGAffineTransformRotate(transform, -90.0f*M_PI/180.0f);
    [moviePlayerWindow setTransform:transform];

 }
1 голос
/ 15 сентября 2009

Попробуйте это. Я нашел что-то новое.

@interface MPMoviePlayerController (extend)
-(void)setOrientation:(int)orientation animated:(BOOL)value;
@end

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieUR];
[moviePlayer setOrientation:UIDeviceOrientationPortrait animated:NO];
if (moviePlayer)
{
    [self.moviePlayer play];
}
1 голос
/ 14 сентября 2009

Из документированных документов я не думаю, что это возможно, используя встроенный медиаплеер

...