Embedded video playing with multiple orientations?

99封情书 提交于 2019-12-03 20:55:20

I had made a tutorial for this and where it is working with interface orienatation changes also.

Here is the implementation file. Just copy paste into your controller,put your URL and try this code

 #import "TestVideoViewController.h"
 #import "UICommonUtils.h"

@implementation TestVideoViewController
@synthesize TestVideoView;


- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //sleep(10.0);
    [busyLoadingView hide:YES];
    //bShow = NO;
} 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    //sleep(10.0);
    [busyLoadingView hide:YES];
    //bShow = NO;
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
     //bShow = YES;
     //[busyLoadingView showWhileExecuting:@selector(showCursor:) onTarget:self withObject:nil animated:YES];

     //[busyLoadingView show:YES];
     return YES;
}

 - (void)webViewDidStartLoad:(UIWebView *)webView
{
    [busyLoadingView show:YES];
}

-(void)viewWillDisappear:(BOOL)animated
{
    [self embedVideo1:@"PASS HERE URL1" andVideo2:@"PASS HERE URL2" frame:self.view.frame];
}

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
       [super viewDidLoad];

    CGRect rectFrame = [UIScreen mainScreen].applicationFrame;

    self.view.frame = rectFrame;
    self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    self.view.autoresizesSubviews = YES;
    //TestVideoView.scalesPageToFit = YES;
//TestVideoView.backgroundColor = [UIColor clearColor];

    busyLoadingView = [[MBProgressHUD alloc] initWithView:self.view];


    // Add HUD to screen
    [self.view addSubview:busyLoadingView];

    busyLoadingView.labelText = @"Loading...";

    [self embedVideo1:@"PASS HERE URL1" andVideo2:@"PASS HERE URL2" frame:self.view.frame];

    //self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    //self.view.autoresizesSubviews = YES;

}

- (void)embedVideo1:(NSString*)url1 andVideo2:(NSString*)url2 frame:(CGRect)frame {  
        float videoWidth = 748.0;
    float videoHeight = 341.0;
    //int marginLeft = 10;
    //int marginTop = 10;

    if ([UICommonUtils isiPad]){
        videoWidth = 748.0;
        videoHeight = 341.0;
        //marginLeft = (int)(frame.size.width - videoWidth) /2;
        //marginTop = 10;
    } else {
        videoWidth = 300.0;
        videoHeight = 160.0;
        //marginLeft = 10;
        //marginTop = 10;
    }

    NSString* embedHTML = @" \
         <html><head> \
     <style type=\"text/css\"> \
     .style11 { \
     font-family:Arial,Helvetica,sans-serif; \
     font-weight:bold; \
     font-size:16; \
    } \
     .style12 { \
     width: \"%0.0f\"; \
     height=\"%0.0f\" \
     align = center; \
     } \
     .style21 { \
     font-family:Arial,Helvetica,sans-serif; \
     font-weight:bold; \
     font-size:16; \
     } \
     .style22 { \
     width: \"%0.0f\"; \
     height=\"%0.0f\" \
     align = center; \
     } \
     body {\
     background-color: transparent; \
     color: black; \
     } \
    </style> \
    </head><body> \
    <table> \
    <tr><td><span class=\"style11\">1) Collecting and Editing Leads</span></td></tr> \
    <tr><td height=20></td></tr> \
    <tr><td class=\"style12\"> \
    <embed id=\"yt1\" src=\"%@\" type=\"application/x-shockwave-flash\" width=\"%0.0f\" height=\"%0.0f\">  \
        </embed> \
    </td></tr> \
    <tr height=20></tr> \
    <tr><td><span class=\"style21\">2) Accessing Leads Online</span></td></tr> \
    <tr><td height=20></td></tr> \
    <tr><td class=\"style22\"> \
    <embed id=\"yt2\" src=\"%@\" type=\"application/x-shockwave-flash\" width=\"%0.0f\" height=\"%0.0f\">  \
    </embed> \
    </td></tr> \
    </table> \
       </body></html>";  
    NSString* html = [NSString stringWithFormat:embedHTML, videoWidth, videoHeight, videoWidth, videoHeight, url1, videoWidth, videoHeight, url2, \
                  videoWidth, videoHeight];  
    //NSString* html = [NSString stringWithFormat:embedHTML, videoWidth, videoHeight, videoWidth, videoHeight, url1, videoWidth-20, videoHeight, url2, \
    //                videoWidth-20, videoHeight];   
   /*
    if(videoView == nil) {  
        videoView = [[UIWebView alloc] initWithFrame:frame];  
        [self.view addSubview:videoView];  
    } */ 
    //[TestVideoView loadHTMLString:html baseURL:nil];  
    [(UIWebView *)self.view loadHTMLString:html baseURL:nil];  
}  


 // Override to allow orientations other than the default portrait orientation.
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
     // Return YES for supported orientations
     //return (interfaceOrientation == UIInterfaceOrientationPortrait);
 //return YES;
    if([UICommonUtils isiPad]) return YES;
    else return NO;
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    //CGRect rectFrame = [UIScreen mainScreen].applicationFrame;

    //self.view.frame = rectFrame;
    //NSLog([NSString stringWithFormat:@"origin x: %f origin y: %f width: %f height: %f", rectFrame.origin.x,
    //     rectFrame.origin.y, rectFrame.size.width, rectFrame.size.height]);

    //TestVideoView.frame = CGRectMake(rectFrame.origin.x, rectFrame.origin.y, rectFrame.size.height, rectFrame.size.width);    
 }

 - (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

     // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
     [super dealloc];
}


@end

Here is the header file for the ViewController

 #import <UIKit/UIKit.h>
 #import "MBProgressHUD.h"


 @interface TestVideoViewController : UIViewController<UIWebViewDelegate>{
    UIWebView *TestVideoView;
    MBProgressHUD *busyLoadingView;
    BOOL bShow;
}

@property (nonatomic, retain) IBOutlet UIWebView *TestVideoView;

- (void)embedVideo1:(NSString*)url1 andVideo2:(NSString*)url2 frame:(CGRect)frame;

@end

Hope this helps you.

If you require more help then please let me know.

EDIT: This code most probably wont work properly on simulator as simulator doesnt have a shockwave- flash player

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!