From 5bc255efe4b83702db368b7af3945e9a8368bfce Mon Sep 17 00:00:00 2001 From: Davin <591807572@qq.com> Date: 星期二, 13 六月 2023 20:19:09 +0800 Subject: [PATCH] faeture 摄像头放大功能 --- EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m | 160 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 135 insertions(+), 25 deletions(-) diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m index 2167f96..fdd73f4 100644 --- a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m +++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m @@ -32,6 +32,7 @@ { NSOperation *op; BOOL _isPressed; + BOOL _landscape; // 鏄惁鏃嬭浆 } @property (nonatomic) BOOL isOpenSound; @@ -89,10 +90,12 @@ @property (weak, nonatomic) IBOutlet UILabel *streamTypeLabel; @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @property (weak, nonatomic) IBOutlet UILabel *zoomSizeLabel; - +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *scrollViewWHRatio; // 婊氬姩瑙嗗浘瀹介珮姣� @property (nonatomic, strong) HDLEZButton *unlockButton;//寮�閿佹寜閽� @property (nonatomic, copy) NSString *streamToken; + +@property (nonatomic, strong) UIView *doorPlayerView;//闂ㄩ攣鎾斁view @end @@ -240,6 +243,21 @@ // } } +/*娣诲姞闂ㄩ攣鎾斁view + */ +-(UIView*)doorPlayerView{ + if (!_doorPlayerView) { + _doorPlayerView=[[UIView alloc] init]; + [_playerView addSubview:_doorPlayerView]; + [_doorPlayerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(_playerView.mas_centerX); + make.top.bottom.equalTo(_playerView); + make.width.mas_equalTo(_doorPlayerView.mas_height).multipliedBy(1); + }]; + } + return _doorPlayerView; +} + - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.navigationController.navigationBar.hidden = NO;//2021-02-01 @@ -288,11 +306,15 @@ /*鑾峰彇璁惧淇℃伅 */ -(void)getDeviceInfo{ + __weak __typeof(self)weakSelf = self; //鑾峰彇璁惧淇℃伅 [EZOpenSDK getDeviceInfo:self.deviceSerial completion:^(EZDeviceInfo *deviceInfo, NSError *error) { if(error) { - NSLog(@"EZ 鏌ヨ璁惧淇℃伅澶辫触"); + NSLog(@"EZ 鏌ヨ璁惧淇℃伅澶辫触:%@",error); + [weakSelf.view makeToast:error.userInfo[@"NSLocalizedDescription"] + duration:1.5 + position:@"center"]; return; } if (deviceInfo) { @@ -372,7 +394,11 @@ [_player setPlayVerifyCode:verifyCode]; [_talkPlayer setPlayVerifyCode:verifyCode]; } - [_player setPlayerView:_playerView]; +// if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//涓洪棬閿佹椂 + [_player setPlayerView:self.doorPlayerView]; +// }else{ +// [_player setPlayerView:_playerView]; +// } BOOL hdStatus = [[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:@"EZVideoPlayHardDecodingStatus_%@", self.deviceInfo.deviceSerial]]; [_player setHDPriority:hdStatus]; [_player startRealPlay]; @@ -450,7 +476,7 @@ __weak __typeof(self)weakSelf = self; [[EZHttpUtil sharedManager] authLockByHDL:content deviceId:self.deviceId completion:^(ResponseData * _Nonnull responseData) { if (responseData.success) { - [[EZHttpUtil sharedManager] remoteOpenByHDL:self.streamToken deviceId:self.deviceId completion:^(ResponseData * _Nonnull responseData) { + [[EZHttpUtil sharedManager] remoteOpenByHDL:weakSelf.streamToken deviceId:weakSelf.deviceId completion:^(ResponseData * _Nonnull responseData) { [MBProgressHUD hideHUDForView:weakSelf.view animated:YES]; if (responseData.success) { [weakSelf.view makeToast:HDLEZLocallizedString(@"device_open_success") @@ -503,9 +529,22 @@ } } -- (UIInterfaceOrientationMask)supportedInterfaceOrientations -{ - return UIInterfaceOrientationMaskAllButUpsideDown; +//- (UIInterfaceOrientationMask)supportedInterfaceOrientations +//{ +// return UIInterfaceOrientationMaskAllButUpsideDown; +//} +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { + if (@available(iOS 16.0, *)) { + if (_landscape) { + //妯睆 + return UIInterfaceOrientationMaskLandscape; + } else { + //绔栧睆 + return UIInterfaceOrientationMaskPortrait; + } + } else { + return UIInterfaceOrientationMaskAllButUpsideDown; + } } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation @@ -517,6 +556,17 @@ self.bottomView.hidden = NO; self.largeTitleLabel.hidden = YES; self.localRecrodContraint.constant = 10; + + [self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.toolBar setTranslatesAutoresizingMaskIntoConstraints:NO]; + [NSLayoutConstraint deactivateConstraints:@[self.scrollViewWHRatio]]; + self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:16/9. constant:0]; + [NSLayoutConstraint activateConstraints:@[self.scrollViewWHRatio]]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self.scrollView layoutIfNeeded]; + [self.toolBar layoutIfNeeded]; + }); + if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) { @@ -526,6 +576,20 @@ self.largeTitleLabel.hidden = NO; self.largeBackButton.hidden = NO; self.bottomView.hidden = YES; + + 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; + + + [self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.toolBar setTranslatesAutoresizingMaskIntoConstraints:NO]; + [NSLayoutConstraint deactivateConstraints:@[self.scrollViewWHRatio]]; + self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:tureScreenH/tureScreenW constant:0]; + [NSLayoutConstraint activateConstraints:@[self.scrollViewWHRatio]]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self.scrollView layoutIfNeeded]; + [self.toolBar layoutIfNeeded]; + }); } } @@ -581,21 +645,25 @@ } -///** -// * 鏀跺埌鐨勭敾闈㈤暱瀹藉�� -// * -// * @param player 鎾斁鍣ㄥ璞� -// * @param height 楂樺害 -// * @param width 瀹藉害 -// */ -//- (void)player:(EZPlayer *)player didReceivedDisplayHeight:(NSInteger)height displayWidth:(NSInteger)width{ +/** + * 鏀跺埌鐨勭敾闈㈤暱瀹藉�� + * + * @param player 鎾斁鍣ㄥ璞� + * @param height 楂樺害 + * @param width 瀹藉害 + */ +- (void)player:(EZPlayer *)player didReceivedDisplayHeight:(NSInteger)height displayWidth:(NSInteger)width{ // HDLEZLog(@"鐢婚潰闀匡細%ld锛屽锛�%ld",(long)height,(long)width); -// CGFloat playerVH=self.playerView.frame.size.height; -// CGFloat playerVW=playerVH*(width/height); -// self.playerView.frame=CGRectMake(0, 0, 50, 50); -// HDLEZLog(@"playerView鐨刦rame锛�%f",self.playerView.frame.size.width); -// -//} + CGFloat playerVH=self.playerView.frame.size.height; +// HDLEZLog(@"楂橈細%ld",(long)playerVH); + CGFloat ratio=((CGFloat)width)/((CGFloat)height); +// HDLEZLog(@"姣斾緥锛�%f",ratio); + CGFloat playerVW=playerVH*ratio; +// HDLEZLog(@"瀹斤細%ld",(long)playerVW); + [self.doorPlayerView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(_doorPlayerView.mas_height).multipliedBy(ratio); + }]; +} - (void)player:(EZPlayer *)player didPlayFailed:(NSError *)error @@ -790,14 +858,56 @@ - (IBAction)large:(id)sender { - NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]; - [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + NSLog(@"######杩涘叆妯睆锛�"); + if (@available(iOS 16.0, *)) { + _landscape = YES; + if (self.navigationController) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self.navigationController setNeedsUpdateOfSupportedInterfaceOrientations]; + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + [self setNeedsUpdateOfSupportedInterfaceOrientations]; + }); + } + NSArray *array = [[[UIApplication sharedApplication] connectedScenes] allObjects]; + UIWindowScene *ws = (UIWindowScene *)array.firstObject; + UIWindowSceneGeometryPreferencesIOS *geometryPreferences = [[UIWindowSceneGeometryPreferencesIOS alloc] init]; + geometryPreferences.interfaceOrientations = UIInterfaceOrientationMaskLandscape; + [ws requestGeometryUpdateWithPreferences:geometryPreferences errorHandler:^(NSError * _Nonnull error) { + NSLog(@"iOS 16 Error: %@",error); + }]; + } else { + NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]; + [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + } } - (IBAction)largeBack:(id)sender { - NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait]; - [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + NSLog(@"######鏀跺洖妯睆锛�"); + if (@available(iOS 16.0, *)) { + _landscape = NO; + if (self.navigationController) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self.navigationController setNeedsUpdateOfSupportedInterfaceOrientations]; + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + [self setNeedsUpdateOfSupportedInterfaceOrientations]; + }); + } + NSArray *array = [[[UIApplication sharedApplication] connectedScenes] allObjects]; + UIWindowScene *ws = (UIWindowScene *)array.firstObject; + UIWindowSceneGeometryPreferencesIOS *geometryPreferences = [[UIWindowSceneGeometryPreferencesIOS alloc] init]; + geometryPreferences.interfaceOrientations = UIInterfaceOrientationMaskPortrait; + [ws requestGeometryUpdateWithPreferences:geometryPreferences errorHandler:^(NSError * _Nonnull error) { + NSLog(@"iOS 16 Error: %@",error); + }]; + } else { + NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait]; + [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + } } - (IBAction)capture:(id)sender -- Gitblit v1.8.0