2

ユーザーがボタンをタップすると、ビデオの再生が開始されます。ビデオが再生されると、常に全画面表示モードになります。

ビデオはポートレート モードで再生する必要があります (ただし、通常、ビデオはランドスケープ モードで再生されます)。これどうやってするの?

4

5 に答える 5

6

最新の iPhone SDK 3.2+ では、プログラマーが任意のサイズと方向でビデオを表示できるようになりました。MPMoviePlayerController のプロパティである新しい MPMoviePlayerView が提供されます。このビューにはビデオが含まれ、次のように追加できます。ビューのサブビュー。

于 2010-04-10T12:51:33.030 に答える
3
@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]; 
} 

ムービー プレーヤーの setOrientation はプライベート API であるため、このソリューションは Apple によって拒否されます。注意が必要ですが、Jailbroke iPhone で動作する可能性があります。

于 2010-03-13T08:54:54.107 に答える
1

文書化されたドキュメントから、組み込みのメディアプレーヤーを使用してこれが可能であるとは思わない

于 2009-09-14T17:57:12.110 に答える
1

これを試してみてください。新しいものを見つけました。

@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];
}
于 2009-09-14T22:44:51.093 に答える
1

これが私がしたことです。ビデオのプリロードが終了したときに通知する 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];

 }
于 2010-06-22T11:37:05.923 に答える