From 3e4be5ed4d2c0395dd60e392baf86c59762059b1 Mon Sep 17 00:00:00 2001 From: Davin <591807572@qq.com> Date: 星期五, 30 六月 2023 10:14:50 +0800 Subject: [PATCH] feature 猫眼全屏布局调整 && UI细节适配 --- EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m | 92 ++++++++++++++++++++++++++++++---------------- 1 files changed, 60 insertions(+), 32 deletions(-) diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m index 155f7c6..9db3569 100644 --- a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m +++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m @@ -39,6 +39,7 @@ @property (nonatomic) BOOL isOpenSound; @property (nonatomic) BOOL isPlaying; +@property (nonatomic) BOOL isAnswering; // 姝e湪鎺ュ惉涓� @property (nonatomic, strong) NSTimer *recordTimer; @property (nonatomic) NSTimeInterval seconds; @property (nonatomic, strong) CALayer *orangeLayer; @@ -60,12 +61,16 @@ @property (nonatomic, weak) IBOutlet UIButton *captureButton; @property (nonatomic, weak) IBOutlet UIButton *localRecordButton; @property (nonatomic, weak) IBOutlet UIButton *playButton; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *playBtnLeftMargin; @property (weak, nonatomic) IBOutlet UIButton *streamPlayBtn; @property (nonatomic, weak) IBOutlet UIButton *voiceButton; @property (nonatomic, weak) IBOutlet UIButton *qualityButton; @property (nonatomic, weak) IBOutlet UIButton *emptyButton; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *emptyBtnLeftMargin; @property (nonatomic, weak) IBOutlet UIButton *largeButton; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *largeBtnRightMargin; @property (nonatomic, weak) IBOutlet UIButton *largeBackButton; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *largeBackBtnLeftMargin; @property (nonatomic, weak) IBOutlet UIView *ptzView; @property (nonatomic, weak) IBOutlet UIButton *ptzCloseButton; @property (nonatomic, weak) IBOutlet UIButton *ptzControlButton; @@ -132,6 +137,7 @@ self.isStartingTalk = NO; self.ptzView.hidden = YES; self.talkView.hidden = YES; + self.isAnswering = NO; self.videoCallOutView.hidden = YES; self.doorPlayerAspectRatio = HDLEZ_APP_SCREEN_WIDTH / HDLEZ_APP_SCREEN_HEIGHT; _landscape = NO; @@ -290,15 +296,16 @@ //缁撴潫鏈湴褰曞儚 if(self.localRecordButton.selected) { + __weak __typeof(self)weakSelf = self; [_player stopLocalRecordExt:^(BOOL ret) { NSLog(@"%d", ret); - [_recordTimer invalidate]; - _recordTimer = nil; - self.localRecordLabel.hidden = YES; - [self saveRecordToPhotosAlbum:_filePath]; - _filePath = nil; + [weakSelf.recordTimer invalidate]; + weakSelf.recordTimer = nil; + weakSelf.localRecordLabel.hidden = YES; + [weakSelf saveRecordToPhotosAlbum:weakSelf.filePath]; + weakSelf.filePath = nil; }]; } @@ -351,8 +358,7 @@ self.captureButton.enabled = NO; self.localRecordButton.enabled = NO; self.streamPlayBtn.hidden = YES; - self.isShowAlert = YES; - NSLog(@"#####鍒濆鍖栨柟娉曞睍绀�"); +// self.isShowAlert = YES; if (_url) { @@ -383,9 +389,9 @@ [self.qualityButton setTitle:NSLocalizedString(@"device_quality_low",@"娴佺晠") forState:UIControlStateNormal]; } } -#warning 涓嶆敮鎸佸垏鎹㈡竻鏅板害锛屽叏灞忔椂涔熼渶瑕佷富鎸� if (_cameraInfo.cameraNo == 0 || [self.deviceInfo.deviceType containsString:@"CAS"]) { //涓嶆敮鎸佹竻鏅板害鍒囨崲 self.qualityButton.hidden = YES; + [self.fullSceneToolView supportVideoLevelChange:NO]; } if (self.deviceInfo.cameraInfo.count > 1) { @@ -401,8 +407,9 @@ if (!_url) { //鎶撳浘鎺ュ彛婕旂ず浠g爜 + __weak __typeof(self)weakSelf = self; [EZOPENSDK captureCamera:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo completion:^(NSString *url, NSError *error) { - NSLog(@"[%@] capture cameraNo is [%d] url is %@, error is %@", _cameraInfo.deviceSerial, (int)_cameraInfo.cameraNo, url, error); + NSLog(@"[%@] capture cameraNo is [%d] url is %@, error is %@", weakSelf.cameraInfo.deviceSerial, (int)weakSelf.cameraInfo.cameraNo, url, error); }]; } #endif @@ -499,8 +506,9 @@ // 闂ㄩ攣鍏ㄥ睆鐘舵�佷笅宸ュ叿鏍� [self.view addSubview:self.fullSceneToolView]; - __weak EZLivePlayViewController *weakSelf = self; - [self.fullSceneToolView configPlayStatus:YES soundOn:YES videoLevel:1 toolOperation:^(HDLEZVideoFullSceneOperation operationType) { + __weak __typeof(self)weakSelf = self; + [self.fullSceneToolView ringRingRing:YES]; // 榛樿鏄剧ず鎸傛柇鎸夐挳 + [self.fullSceneToolView configPlayStatus:YES soundOn:YES videoLevel:_cameraInfo.videoLevel toolOperation:^(HDLEZVideoFullSceneOperation operationType) { [weakSelf doorLockFullSceneOperation:operationType]; }]; } @@ -600,12 +608,22 @@ [self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO]; [self.toolBar setTranslatesAutoresizingMaskIntoConstraints:NO]; - [NSLayoutConstraint deactivateConstraints:@[self.scrollViewWHRatio]]; + [self.playButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.emptyButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.largeButton setTranslatesAutoresizingMaskIntoConstraints:NO]; +// [self.largeBackButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [NSLayoutConstraint deactivateConstraints:@[self.scrollViewWHRatio, self.playBtnLeftMargin, self.emptyBtnLeftMargin, self.largeBtnRightMargin]]; self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:16/9. constant:0]; - [NSLayoutConstraint activateConstraints:@[self.scrollViewWHRatio]]; + self.playBtnLeftMargin = [NSLayoutConstraint constraintWithItem:self.playButton attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.toolBar attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; + self.emptyBtnLeftMargin = [NSLayoutConstraint constraintWithItem:self.emptyButton attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.qualityButton attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + self.largeBtnRightMargin = [NSLayoutConstraint constraintWithItem:self.toolBar attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.largeButton attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + [NSLayoutConstraint activateConstraints:@[self.scrollViewWHRatio, self.playBtnLeftMargin, self.emptyBtnLeftMargin, self.largeBtnRightMargin]]; dispatch_async(dispatch_get_main_queue(), ^{ [self.scrollView layoutIfNeeded]; [self.toolBar layoutIfNeeded]; + [self.playButton layoutIfNeeded]; + [self.emptyButton layoutIfNeeded]; + [self.largeButton layoutIfNeeded]; }); if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || @@ -620,16 +638,25 @@ CGFloat tureScreenW = HDLEZ_APP_SCREEN_WIDTH > HDLEZ_APP_SCREEN_HEIGHT ? HDLEZ_APP_SCREEN_HEIGHT : HDLEZ_APP_SCREEN_WIDTH; CGFloat tureScreenH = HDLEZ_APP_SCREEN_WIDTH < HDLEZ_APP_SCREEN_HEIGHT ? HDLEZ_APP_SCREEN_HEIGHT : HDLEZ_APP_SCREEN_WIDTH; - + CGFloat marginSpace = 64; [self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO]; [self.toolBar setTranslatesAutoresizingMaskIntoConstraints:NO]; - [NSLayoutConstraint deactivateConstraints:@[self.scrollViewWHRatio]]; + [self.playButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.emptyButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.largeButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [NSLayoutConstraint deactivateConstraints:@[self.scrollViewWHRatio, self.playBtnLeftMargin, self.emptyBtnLeftMargin, self.largeBtnRightMargin]]; self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:tureScreenH/(tureScreenW - 37) constant:0]; - [NSLayoutConstraint activateConstraints:@[self.scrollViewWHRatio]]; + self.playBtnLeftMargin = [NSLayoutConstraint constraintWithItem:self.playButton attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.toolBar attribute:NSLayoutAttributeLeading multiplier:1 constant:marginSpace]; + self.emptyBtnLeftMargin = [NSLayoutConstraint constraintWithItem:self.emptyButton attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.qualityButton attribute:NSLayoutAttributeTrailing multiplier:1 constant:(tureScreenH - tureScreenW - 2 * marginSpace)]; + self.largeBtnRightMargin = [NSLayoutConstraint constraintWithItem:self.toolBar attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.largeButton attribute:NSLayoutAttributeTrailing multiplier:1 constant:marginSpace]; + [NSLayoutConstraint activateConstraints:@[self.scrollViewWHRatio, self.playBtnLeftMargin, self.emptyBtnLeftMargin, self.largeBtnRightMargin]]; dispatch_async(dispatch_get_main_queue(), ^{ [self.scrollView layoutIfNeeded]; [self.toolBar layoutIfNeeded]; + [self.playButton layoutIfNeeded]; + [self.emptyButton layoutIfNeeded]; + [self.largeButton layoutIfNeeded]; }); } } @@ -699,7 +726,7 @@ // HDLEZLog(@"楂橈細%ld",(long)playerVH); CGFloat ratio=((CGFloat)width)/((CGFloat)height); NSLog(@"姣斾緥锛�%f",ratio); - CGFloat playerVW=playerVH*ratio; +// CGFloat playerVW=playerVH*ratio; self.doorPlayerAspectRatio = ratio; // HDLEZLog(@"瀹斤細%ld",(long)playerVW); [self.doorPlayerView mas_updateConstraints:^(MASConstraintMaker *make) { @@ -900,6 +927,7 @@ - (IBAction)large:(id)sender { + if (!self.isPlaying)return; // 鏈挱鏀剧姝㈠叏灞忥紝 self.videoCallOutView.hidden = YES; if (_landscape == YES) { [self largeBack:self.largeBackButton]; @@ -1301,6 +1329,7 @@ self.speakImageView.alpha = 0; self.talkView.hidden = YES; }]; + self.isAnswering = NO; } - (IBAction)localButtonClicked:(id)sender @@ -1308,15 +1337,16 @@ //缁撴潫鏈湴褰曞儚 if(self.localRecordButton.selected) { + __weak __typeof(self)weakSelf = self; [_player stopLocalRecordExt:^(BOOL ret) { NSLog(@"%d", ret); - [_recordTimer invalidate]; - _recordTimer = nil; - self.localRecordLabel.hidden = YES; - [self saveRecordToPhotosAlbum:_filePath]; - _filePath = nil; + [weakSelf.recordTimer invalidate]; + weakSelf.recordTimer = nil; + weakSelf.localRecordLabel.hidden = YES; + [weakSelf saveRecordToPhotosAlbum:weakSelf.filePath]; + weakSelf.filePath = nil; }]; } else @@ -1396,18 +1426,19 @@ } - (IBAction)clickCalloutHangupAction:(id)sender { - [UIView dd_showMessage:@"鎸傛柇寮�鍙戜腑..."]; self.isShowAlert = NO; + [self closeTalkView:self.talkCloseButton]; } - (IBAction)clickCalloutIgnoreAction:(id)sender { - [UIView dd_showMessage:@"蹇界暐寮�鍙戜腑..."]; +// [UIView dd_showMessage:@"蹇界暐寮�鍙戜腑..."]; self.isShowAlert = NO; + self.isAnswering = NO; } - (IBAction)clickCalloutAnswerAction:(id)sender { - [UIView dd_showMessage:@"鎺ュ惉寮�鍙戜腑..."]; self.isShowAlert = NO; + self.isAnswering = YES; [self talkButtonClicked:self.talkButton]; } @@ -1416,15 +1447,11 @@ /// 灞曠ず鍛煎彨寮规 - (void)showCallOutAlertView { self.videoCallOutView.hidden = NO; - [UIView dd_showMessage:@"灞曠ず鍛煎彨寮规"]; - NSLog(@"灞曠ず鍛煎彨寮规"); } /// 闅愯棌鍛煎彨寮规 - (void)hiddenCallOutAlertView { self.videoCallOutView.hidden = YES; - [UIView dd_showMessage:@"闅愯棌鍛煎彨寮规"]; - NSLog(@"闅愯棌鍛煎彨寮规"); } #pragma mark - Private Methods @@ -1545,7 +1572,7 @@ [view removeFromSuperview]; } } - CGFloat averageWidth = [UIScreen mainScreen].bounds.size.width/5.0; +// CGFloat averageWidth = [UIScreen mainScreen].bounds.size.width/5.0; UIImageView *lineImageView1 = [UIView dd_instanceVerticalLine:20 color:[UIColor grayColor]]; // lineImageView1.frame = CGRectMake(averageWidth, 7, lineImageView1.frame.size.width, lineImageView1.frame.size.height); [self.toolBar addSubview:lineImageView1]; @@ -1686,7 +1713,10 @@ - (void)doorLockFullSceneOperation:(HDLEZVideoFullSceneOperation)operation { switch (operation) { case HDLEZVideoFullSceneOperationOfHangUp: { // 鎸傛柇 + [self largeBack:self.largeButton]; + [self closeTalkView:self.talkCloseButton]; [self hiddenCallOutAlertView]; + [self.navigationController popViewControllerAnimated:YES]; } break; case HDLEZVideoFullSceneOperationOfPlay: { // 鎾斁 @@ -1732,10 +1762,8 @@ - (void)setIsShowAlert:(BOOL)isShowAlert { _isShowAlert = isShowAlert; if (isShowAlert) { - NSLog(@"#####set鏂规硶灞曠ず"); [self showCallOutAlertView]; } else { - NSLog(@"#####set鏂规硶闅愯棌"); [self hiddenCallOutAlertView]; } } -- Gitblit v1.8.0