いくつかのアプローチを利用できます。おそらく、最も単純で最も制御しやすいのは、 のサブクラス化ですMPMoviePlayerViewController
。
アプリですべてのインターフェイスの向きをサポートすることから始めます( をapp-info.plist
参照)。次に、iOS 6 とそれ以前のオペレーティング システムの両方の方法で、リスト ビュー(だと仮定します) を縦向きに制限します。MyListViewController.m
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationMaskPortrait;
}
- (NSUInteger) supportedInterfaceOrientations {
return(UIInterfaceOrientationMaskPortrait);
}
- (BOOL) shouldAutorotate {
return FALSE;
}
次に、 から派生した という新しい Objective C クラスを作成しMPMoviePlayerViewController
ますMyMoviePlayerViewController
。ここにありMyMoviePlayerViewController.h
ます:
#import <MediaPlayer/MediaPlayer.h>
@interface MyMoviePlayerViewController : MPMoviePlayerViewController
@end
そして、ここにありますMyMoviePlayerViewController.m
:
#import "MyMoviePlayerViewController.h"
@interface MyMoviePlayerViewController ()
@end
@implementation MyMoviePlayerViewController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
- (NSUInteger) supportedInterfaceOrientations {
return(UIInterfaceOrientationMaskAll);
}
- (BOOL) shouldAutorotate {
return TRUE;
}
-(id)initWithContentURL:(NSURL *)contentURL {
UIGraphicsBeginImageContext(CGSizeMake(1,1));
self = [super initWithContentURL:contentURL];
UIGraphicsEndImageContext();
if (self) {
self.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:[self moviePlayer]];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:[self moviePlayer]];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[[self moviePlayer] setFullscreen:YES animated:NO];
[self moviePlayer].controlStyle = MPMovieControlStyleDefault;
}
- (void)movieFinishedCallback:(NSNotification*)notification {
MPMoviePlayerController *moviePlayer = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
self.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
次に、に追加しMyListViewController.h
ます:
#import "MyMoviePlayerViewController.h"
ではMyListViewController.m
、次を使用します。
MyMoviePlayerViewController *player =[[MyMoviePlayerViewController alloc]
initWithContentURL:URLWithString:[[main_data objectAtIndex:indexPath.row]
objectForKey:@"url"]]];
[self presentViewController:player animated:YES completion:nil];
もちろん、特定のニーズに合わせて設定 (アニメーション スタイル、表示するコントロールなど) を微調整できます。