// AppDelegate.m
// AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// for youtube video playing ...for youtube video play change orientation
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(forceToLandscape:)
name:@"youTubeChangeOrientationsNotification"
object:nil];
return YES;
}
#pragma mark - for youtube video play change orientation
//// -- for youtube video play change orientation <START>
int shouldShowInLandscape = 0;
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
return UIInterfaceOrientationMaskLandscapeLeft;
} else {
if(shouldShowInLandscape)
{
return UIInterfaceOrientationMaskLandscape;
}
return UIInterfaceOrientationMaskPortrait;
}
}
-(void) forceToLandscape:(NSNotification*) theNot {
shouldShowInLandscape = [[theNot object] intValue];
}
////-- for youtube video play change orientation <END>
VideoViewController.h
//VideoViewController.h
@interface VideoViewController : UIViewController {
IBOutlet UIWebView *webViewForVideoPlay;
}
VideoViewController.m
//VideoViewController.m
- (void)viewDidLoad{
[super viewDidLoad];
// You tube video play
NSString *youTubeID = [self extractYoutubeID:@"http://www.youtube.com/watch?v=LWSzi-Eae08&feature=youtu.be"];
[webViewForVideoPlay setAllowsInlineMediaPlayback:YES];
[webViewForVideoPlay setMediaPlaybackRequiresUserAction:NO];
[webViewForVideoPlay.scrollView setScrollEnabled:NO];
NSString *embedHTML =[NSString stringWithFormat:@"\
<html><head>\
<style type=\"text/css\">\
body {\
background-color: #000;\
}\
</style>\
</head><body style=\"margin:0\">\
<iframe width=\"%f\" height=\"%f\" title=\"YouTube Video\" frameborder=\"0\" class=\"youtube-player\" src=\"http://www.youtube.com/embed/%@?modestbranding=1&rel=0;autoplay=1;showinfo=0;loop=1;autohide=1\" allowfullscreen></iframe>\
</body></html>",webViewForVideoPlay.frame.size.width-4, webViewForVideoPlay.frame.size.height,youTubeID];
[webViewForVideoPlay loadHTMLString:embedHTML baseURL:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerWillExitFullscreen:)
name:@"UIMoviePlayerControllerWillExitFullscreenNotification"
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerDidEnterFullscreen:)
name:@"UIMoviePlayerControllerDidEnterFullscreenNotification"
object:nil];
}
#pragma mark - youtube video play
////-- for you tube video play <START>
- (NSString *)extractYoutubeID:(NSString *)youtubeURL
{
//NSLog(@"youtube %@",youtubeURL);
NSError *error = NULL;
NSString *regexString = @"(?<=v(=|/))([-a-zA-Z0-9_]+)|(?<=youtu.be/)([-a-zA-Z0-9_]+)";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexString options:NSRegularExpressionCaseInsensitive error:&error];
NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString:youtubeURL options:0 range:NSMakeRange(0, [youtubeURL length])];
if(!NSEqualRanges(rangeOfFirstMatch, NSMakeRange(NSNotFound, 0)))
{
NSString *substringForFirstMatch = [youtubeURL substringWithRange:rangeOfFirstMatch];
return substringForFirstMatch;
}
return nil;
}
- (void)playerWillExitFullscreen:(NSNotification *)notification {
[[NSNotificationCenter defaultCenter] postNotificationName:@"youTubeChangeOrientationsNotification"
object:[NSString stringWithFormat:@"0"]];
}
- (void)playerDidEnterFullscreen:(NSNotification *)notification {
[[NSNotificationCenter defaultCenter] postNotificationName:@"youTubeChangeOrientationsNotification"
object:[NSString stringWithFormat:@"1"]];
}
////-- for you tube video play <END>
Very useful. Works fine. I have spent one day for this.But youtube videos are not playing automatically. If you don't mind can you add demo project.
ReplyDeleteThanks