-
Notifications
You must be signed in to change notification settings - Fork 479
快速开始
changsanjiang edited this page Sep 13, 2023
·
11 revisions
pod 'SJVideoPlayer'
-
step 1: 前往
Targets
->General
->Device Orientation
-> 选择Portrait
; -
step 2:
#import "SJRotationManager.h"
@implementation AppDelegate
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
return [SJRotationManager supportedInterfaceOrientationsForWindow:window];
}
@end
/// swift
/// class AppDelegate: UIResponder, UIApplicationDelegate {
/// func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> /// UIInterfaceOrientationMask {
/// return SJRotationManager.supportedInterfaceOrientations(window)
/// }
/// }
- step 3:
@implementation UIViewController (RotationControl)
- (BOOL)shouldAutorotate {
return NO;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
@end
@implementation UITabBarController (RotationControl)
- (UIViewController *)sj_topViewController {
if ( self.selectedIndex == NSNotFound )
return self.viewControllers.firstObject;
return self.selectedViewController;
}
- (BOOL)shouldAutorotate {
return [[self sj_topViewController] shouldAutorotate];
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return [[self sj_topViewController] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return [[self sj_topViewController] preferredInterfaceOrientationForPresentation];
}
@end
@implementation UINavigationController (RotationControl)
- (BOOL)shouldAutorotate {
return self.topViewController.shouldAutorotate;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return self.topViewController.supportedInterfaceOrientations;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return self.topViewController.preferredInterfaceOrientationForPresentation;
}
- (nullable UIViewController *)childViewControllerForStatusBarStyle {
return self.topViewController;
}
- (nullable UIViewController *)childViewControllerForStatusBarHidden {
return self.topViewController;
}
@end
- setup 4: iOS 13.0 之后, 需在自己的vc中实现
shouldAutorotate
, 并返回NO
.
@interface YourPlayerViewController ()
@property (nonatomic, strong) SJVideoPlayer *player;
@end
@implementation YourPlayerViewController
- (BOOL)shouldAutorotate {
return NO;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[_player vc_viewDidAppear];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[_player vc_viewWillDisappear];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[_player vc_viewDidDisappear];
}
@end
- 导入头文件
#import <SJVideoPlayer/SJVideoPlayer.h>
- 添加
player
属性
@interface ViewController ()
@property (nonatomic, strong, readonly) SJVideoPlayer *player;
@end
- 创建
player
对象
- (void)viewDidLoad {
[super viewDidLoad];
_player = SJVideoPlayer.player;
[self.view addSubview:_player.view];
[_player.view mas_makeConstraints:^(MASConstraintMaker *make) {
if (@available(iOS 11.0, *)) {
make.top.equalTo(self.view.mas_safeAreaLayoutGuideTop);
} else {
make.top.offset(20);
}
make.left.right.offset(0);
make.height.equalTo(self.player.view.mas_width).multipliedBy(9/16.0);
}];
}
- (BOOL)shouldAutorotate {
return NO;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[_player vc_viewDidAppear];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[_player vc_viewWillDisappear];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[_player vc_viewDidDisappear];
}
- 通过URL进行播放
// startPosition: 表示从10s的位置处开始播放
SJVideoPlayerURLAsset *asset = [SJVideoPlayerURLAsset.alloc initWithURL:_media.URL startPosition:10];
_player.URLAsset = asset;