From dd29df2e08ac87c878e26513f1b5ae06eae7a6d9 Mon Sep 17 00:00:00 2001
From: Davin <591807572@qq.com>
Date: 星期日, 25 六月 2023 19:54:32 +0800
Subject: [PATCH] feature UI调整
---
EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m | 125 ++++++++++++++++++++++++++++++++++++-----
1 files changed, 110 insertions(+), 15 deletions(-)
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
index 35c1a4c..155f7c6 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
@@ -25,6 +25,7 @@
#import <EZOpenSDKFramework/EZPMPlayPrivateTokenInfo.h>
#import "HDLEZAlertInputView.h"
#import "HDLEZOPButton.h"
+#import "HDLEZVideoDoorToolView.h"
#define MinimumZoomScale 1.0
#define MaximumZoomScale 4.0
@@ -49,6 +50,9 @@
@property (nonatomic, strong) HIKLoadView *loadingView;
@property (nonatomic, weak) IBOutlet UIButton *playerPlayButton;
@property (nonatomic, weak) IBOutlet UIView *playerView;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *playerViewWHRatio;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *playerViewBottomMargin;
+
@property (nonatomic, weak) IBOutlet UIView *toolBar;
@property (nonatomic, weak) IBOutlet UIView *bottomView;
@property (nonatomic, weak) IBOutlet UIButton *controlButton;
@@ -98,6 +102,7 @@
@property (nonatomic, copy) NSString *streamToken;
@property (nonatomic, strong) UIView *doorPlayerView;//闂ㄩ攣鎾斁view
+@property (nonatomic, assign) CGFloat doorPlayerAspectRatio; // 闂ㄩ攣鎾斁瑙嗗浘瀹介珮姣�
// 鍛煎彨瑙嗗浘鐩稿叧鎺т欢
@property (weak, nonatomic) IBOutlet UIView *videoCallOutView; // 鍛煎彨寮规
@@ -105,6 +110,8 @@
@property (weak, nonatomic) IBOutlet HDLEZOPButton *hangUpButton; // 鎸傛柇鎸夐挳
@property (weak, nonatomic) IBOutlet HDLEZOPButton *ignoreButton; // 蹇界暐鎸夐挳
@property (weak, nonatomic) IBOutlet HDLEZOPButton *answerButton; // 鎺ュ惉鎸夐挳
+
+@property (strong, nonatomic) HDLEZVideoDoorToolView *fullSceneToolView; // 鍏ㄥ睆宸ュ叿瑙嗗浘
@end
@@ -125,6 +132,8 @@
self.isStartingTalk = NO;
self.ptzView.hidden = YES;
self.talkView.hidden = YES;
+ self.videoCallOutView.hidden = YES;
+ self.doorPlayerAspectRatio = HDLEZ_APP_SCREEN_WIDTH / HDLEZ_APP_SCREEN_HEIGHT;
_landscape = NO;
if (!self.deviceInfo) {//濡傛灉娌℃湁浼燿eviceInfo,闇�涓诲姩鑾峰彇
@@ -374,6 +383,7 @@
[self.qualityButton setTitle:NSLocalizedString(@"device_quality_low",@"娴佺晠") forState:UIControlStateNormal];
}
}
+#warning 涓嶆敮鎸佸垏鎹㈡竻鏅板害锛屽叏灞忔椂涔熼渶瑕佷富鎸�
if (_cameraInfo.cameraNo == 0 || [self.deviceInfo.deviceType containsString:@"CAS"]) { //涓嶆敮鎸佹竻鏅板害鍒囨崲
self.qualityButton.hidden = YES;
}
@@ -486,6 +496,13 @@
[self.answerButton setTitle:HDLEZLocallizedString(@"device_callout_answer") forState:UIControlStateNormal];
self.answerButton.imagePosition = HDLEZOPButtonImagePositionTop;
self.answerButton.spacingBetweenImageAndTitle = 12.;
+
+ // 闂ㄩ攣鍏ㄥ睆鐘舵�佷笅宸ュ叿鏍�
+ [self.view addSubview:self.fullSceneToolView];
+ __weak EZLivePlayViewController *weakSelf = self;
+ [self.fullSceneToolView configPlayStatus:YES soundOn:YES videoLevel:1 toolOperation:^(HDLEZVideoFullSceneOperation operationType) {
+ [weakSelf doorLockFullSceneOperation:operationType];
+ }];
}
/*寮�閿�
@@ -677,12 +694,13 @@
* @param width 瀹藉害
*/
- (void)player:(EZPlayer *)player didReceivedDisplayHeight:(NSInteger)height displayWidth:(NSInteger)width{
-// HDLEZLog(@"鐢婚潰闀匡細%ld锛屽锛�%ld",(long)height,(long)width);
+ NSLog(@"鐢婚潰闀匡細%ld锛屽锛�%ld",(long)height,(long)width);
CGFloat playerVH=self.playerView.frame.size.height;
// HDLEZLog(@"楂橈細%ld",(long)playerVH);
CGFloat ratio=((CGFloat)width)/((CGFloat)height);
-// HDLEZLog(@"姣斾緥锛�%f",ratio);
+ NSLog(@"姣斾緥锛�%f",ratio);
CGFloat playerVW=playerVH*ratio;
+ self.doorPlayerAspectRatio = ratio;
// HDLEZLog(@"瀹斤細%ld",(long)playerVW);
[self.doorPlayerView mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(_doorPlayerView.mas_height).multipliedBy(ratio);
@@ -882,6 +900,7 @@
- (IBAction)large:(id)sender
{
+ self.videoCallOutView.hidden = YES;
if (_landscape == YES) {
[self largeBack:self.largeBackButton];
return;
@@ -890,22 +909,29 @@
if (self.isVideoDoorLock) {
self.navigationController.navigationBarHidden = YES;
self.localRecrodContraint.constant = 50;
- self.toolBar.hidden = NO;
- self.largeTitleLabel.hidden = NO;
+ self.toolBar.hidden = YES;
+ self.largeTitleLabel.hidden = YES;
self.largeBackButton.hidden = YES;
self.bottomView.hidden = YES;
- self.videoCallOutView.hidden = YES;
+ self.scrollView.backgroundColor = [UIColor blackColor];
[self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO];
- [self.toolBar setTranslatesAutoresizingMaskIntoConstraints:NO];
- [NSLayoutConstraint deactivateConstraints:@[self.scrollViewTopMargin, self.scrollViewWHRatio]];
+ [self.playerView setTranslatesAutoresizingMaskIntoConstraints:NO];
+ [NSLayoutConstraint deactivateConstraints:@[self.scrollViewTopMargin, self.scrollViewWHRatio, self.playerViewWHRatio, self.playerViewBottomMargin]];
self.scrollViewTopMargin = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-HDLEZ_APP_STATUS_BAR_HEIGHT];
- self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:HDLEZ_APP_SCREEN_WIDTH/(HDLEZ_APP_SCREEN_HEIGHT - 37.) constant:0];
- [NSLayoutConstraint activateConstraints:@[self.scrollViewTopMargin, self.scrollViewWHRatio]];
+ self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:HDLEZ_APP_SCREEN_WIDTH/HDLEZ_APP_SCREEN_HEIGHT constant:0];
+
+ self.playerViewWHRatio = [NSLayoutConstraint constraintWithItem:self.playerView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.playerView attribute:NSLayoutAttributeHeight multiplier:self.doorPlayerAspectRatio constant:0];
+ CGFloat playerBottomMargin = HDLEZ_APP_SCREEN_HEIGHT - (HDLEZ_APP_SCREEN_WIDTH / self.doorPlayerAspectRatio);
+ NSLog(@"########鎾斁闂撮殭锛�%lf", playerBottomMargin);
+ self.playerViewBottomMargin = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.playerView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:playerBottomMargin];
+ [NSLayoutConstraint activateConstraints:@[self.scrollViewTopMargin, self.scrollViewWHRatio, self.playerViewWHRatio, self.playerViewBottomMargin]];
dispatch_async(dispatch_get_main_queue(), ^{
[self.scrollView layoutIfNeeded];
- [self.toolBar layoutIfNeeded];
+ [self.playerView layoutIfNeeded];
});
+ self.fullSceneToolView.hidden = NO;
+ [self.view bringSubviewToFront:self.fullSceneToolView];
return;
}
if (@available(iOS 16.0, *)) {
@@ -942,17 +968,22 @@
self.largeTitleLabel.hidden = YES;
self.localRecrodContraint.constant = 10;
self.videoCallOutView.hidden = !self.isShowAlert;
+ self.scrollView.backgroundColor = [UIColor clearColor];
[self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO];
- [self.toolBar setTranslatesAutoresizingMaskIntoConstraints:NO];
- [NSLayoutConstraint deactivateConstraints:@[self.scrollViewTopMargin,self.scrollViewWHRatio]];
+ [self.playerView setTranslatesAutoresizingMaskIntoConstraints:NO];
+ [NSLayoutConstraint deactivateConstraints:@[self.scrollViewTopMargin,self.scrollViewWHRatio, self.playerViewWHRatio, self.playerViewBottomMargin]];
self.scrollViewTopMargin = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0];
self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:16/9. constant:0];
- [NSLayoutConstraint activateConstraints:@[self.scrollViewTopMargin,self.scrollViewWHRatio]];
+
+ self.playerViewWHRatio = [NSLayoutConstraint constraintWithItem:self.playerView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.playerView attribute:NSLayoutAttributeHeight multiplier:16/9. constant:0];
+ self.playerViewBottomMargin = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.playerView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0];
+ [NSLayoutConstraint activateConstraints:@[self.scrollViewTopMargin,self.scrollViewWHRatio, self.playerViewWHRatio, self.playerViewBottomMargin]];
dispatch_async(dispatch_get_main_queue(), ^{
[self.scrollView layoutIfNeeded];
- [self.toolBar layoutIfNeeded];
+ [self.playerView layoutIfNeeded];
});
+ self.fullSceneToolView.hidden = YES;
return;
}
if (@available(iOS 16.0, *)) {
@@ -1041,6 +1072,7 @@
[self.voiceButton setImage:[UIImage imageNamed:@"preview_voice_btn"] forState:UIControlStateNormal];
}
_isOpenSound = !_isOpenSound;
+ [self.fullSceneToolView soundOn:_isOpenSound];
}
- (IBAction)playButtonClicked:(id)sender
@@ -1069,6 +1101,11 @@
[self.loadingView startSquareClcokwiseAnimation];
}
_isPlaying = !_isPlaying;
+ [self.fullSceneToolView playStatus:_isPlaying];
+}
+
+- (SEL)extracted {
+ return @selector(hideQualityView);
}
- (IBAction)qualityButtonClicked:(id)sender
@@ -1081,7 +1118,7 @@
{
self.qualityView.hidden = NO;
//鍋滅暀5s浠ュ悗闅愯棌瑙嗛璐ㄩ噺View.
- [self performSelector:@selector(hideQualityView) withObject:nil afterDelay:5.0f];
+ [self performSelector:[self extracted] withObject:nil afterDelay:5.0f];
}
self.qualityButton.selected = !self.qualityButton.selected;
}
@@ -1134,14 +1171,17 @@
if (sender == weakSelf.highButton)
{
[weakSelf.qualityButton setTitle:NSLocalizedString(@"device_quality_high", @"楂樻竻") forState:UIControlStateNormal];
+ [self.fullSceneToolView videoLevel:2];
}
else if (sender == weakSelf.middleButton)
{
[weakSelf.qualityButton setTitle:NSLocalizedString(@"device_quality_median", @"鍧囪 ") forState:UIControlStateNormal];
+ [self.fullSceneToolView videoLevel:1];
}
else
{
[weakSelf.qualityButton setTitle:NSLocalizedString(@"device_quality_low", @"娴佺晠") forState:UIControlStateNormal];
+ [self.fullSceneToolView videoLevel:0];
}
if (result)
{
@@ -1642,6 +1682,52 @@
}
}
+#pragma mark - PrivateMethod (闂ㄩ攣鍏ㄥ睆鏃剁殑涓�绯诲垪鎿嶄綔)
+- (void)doorLockFullSceneOperation:(HDLEZVideoFullSceneOperation)operation {
+ switch (operation) {
+ case HDLEZVideoFullSceneOperationOfHangUp: { // 鎸傛柇
+ [self hiddenCallOutAlertView];
+ }
+ break;
+ case HDLEZVideoFullSceneOperationOfPlay: { // 鎾斁
+ [self playButtonClicked:self.playButton];
+ }
+ break;
+ case HDLEZVideoFullSceneOperationOfPause: { // 鏆傚仠
+ [self playButtonClicked:self.playButton];
+ }
+ break;
+ case HDLEZVideoFullSceneOperationOfSound: { // 寮�鍚煶閲�
+ [_player openSound];
+ NSLog(@"#######寮�鍚煶閲�");
+ }
+ break;
+ case HDLEZVideoFullSceneOperationOfSoundOff: { // 闈欓煶
+ [_player closeSound];
+ NSLog(@"#######闈欓煶");
+ }
+ break;
+ case HDLEZVideoFullSceneOperationOfSmooth: { // 娴佺晠
+ [self qualitySelectedClicked:self.lowButton];
+ }
+ break;
+ case HDLEZVideoFullSceneOperationOfBalance: { // 鍧囪
+ [self qualitySelectedClicked:self.middleButton];
+ }
+ break;
+ case HDLEZVideoFullSceneOperationOfHDFull: { // 楂樻竻
+ [self qualitySelectedClicked:self.highButton];
+ }
+ break;
+ case HDLEZVideoFullSceneOperationOfExitFull: { // 閫�鍑哄叏灞�
+ [self largeBack:self.largeButton];
+ }
+ break;
+ default:
+ break;
+ }
+}
+
#pragma Setter
- (void)setIsShowAlert:(BOOL)isShowAlert {
_isShowAlert = isShowAlert;
@@ -1654,6 +1740,15 @@
}
}
+#pragma mark - Getter
+- (HDLEZVideoDoorToolView *)fullSceneToolView {
+ if (!_fullSceneToolView) {
+ _fullSceneToolView = [[HDLEZVideoDoorToolView alloc] initWithFrame:CGRectMake(0, HDLEZ_APP_SCREEN_HEIGHT - 280, HDLEZ_APP_SCREEN_WIDTH, 280)];
+ _fullSceneToolView.hidden = YES;
+ }
+ return _fullSceneToolView;
+}
+
- (BOOL)prefersHomeIndicatorAutoHidden {
return YES;
}
--
Gitblit v1.8.0