iOS在不支持橫屏情況下,實現播放器全屏播放


    在使用MPMoviePlayerController實現播放器播放時,發現不能全屏播放,原來是因為項目不支持橫屏,把支持橫屏的選項勾住就OK啦,但是其他頁面不支持橫屏,這個方法就行不通了。

    在網上找了很多的資料,很多都是在iOS 6之后就舍棄的,都沒用,下面我就來介紹下,在不支持橫屏的情況下,實現視頻播放器的全屏播放。

1、

    首先在AppDelegate.h 定義@property (nonatomic, assign) BOOL allowRotation; // 標記是否可以旋轉

 

2、

    同時在AppDelegate.m中實現這個方法,需要返回個支持屏幕轉向,做個簡單的判斷,是否支持橫豎屏,是的話返回UIInterfaceOrientationMaskAll,否則返回UIInterfaceOrientationMaskPortrait。返回的是個枚舉,其中各種值的意思這里不做介紹了。

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)nowWindow {   

//    是非支持橫豎屏

    if (_allowRotation) {

        return UIInterfaceOrientationMaskAll;  

    } else{

        return UIInterfaceOrientationMaskPortrait;

    }

}

 

3、

    在需要全屏的控制器中需要設置 allowRotation為YES,然后就可以實現橫豎屏的自動轉換了。

    AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;

    appDelegate.allowRotation = YES;

 

4、

    注意在返回其他界面時,要設置allowRotation為NO.

//    設置不支持橫屏

    AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;

    appDelegate.allowRotation = NO;

 

5、

    還有個問題需要注意,當橫屏的時候,可能會出現導航條,這時要是按下返回按鈕或者去其他界面的按鈕,到了其他界面也是橫屏。所以要在橫屏播放視頻的時候,隱藏導航條。我用的是通知隱藏導航條,有其他的方法也行,歡迎提出。

    首先回到AppDelegate.m文件中剛才的協議代理方法中添加通知

//    添加通知 橫屏不出現導航條

    [[NSNotificationCenter defaultCenter] postNotificationName:@"hideNav" object:nil];

 

    然后在需要橫屏的那個播放器的控制器中接受通知,實現方法,當橫屏時候,隱藏導航條。在這里需要做個橫豎屏的判斷,我是根據屏幕的寬高來判斷的,同樣也有很多其他的方法都可以實現。

//    接受通知 判斷導航條是否隱藏

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideN) name:@"hideNav" object:nil];

 

#pragma mark - 接受通知 判斷導航條是否隱藏

- (void)hideN{    

    if ([UIScreen mainScreen].bounds.size.width > [UIScreen mainScreen].bounds.size.height) {

//        橫屏隱藏

        self.navigationController.navigationBarHidden = YES;

    }else{

//        豎屏顯示

        self.navigationController.navigationBarHidden = NO;

    }

}

 

    好了,這下就解決了在不支持橫屏時,可以全屏播放的功能了,希望可以幫到大家。 

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM