From 011b0cc918bfa0e36a9ad4a0f45c18b801815920 Mon Sep 17 00:00:00 2001
From: Davin <591807572@qq.com>
Date: 星期四, 15 六月 2023 21:00:36 +0800
Subject: [PATCH] faeture 历史消息

---
 EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m |  139 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 126 insertions(+), 13 deletions(-)

diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
index 7835c22..c77fe02 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,7 +90,7 @@
 @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;
@@ -115,6 +116,7 @@
     self.isStartingTalk = NO;
     self.ptzView.hidden = YES;
     self.talkView.hidden = YES;
+    _landscape = NO;
     
     if (!self.deviceInfo) {//濡傛灉娌℃湁浼燿eviceInfo,闇�涓诲姩鑾峰彇
         [self getDeviceInfo];
@@ -528,9 +530,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
@@ -542,15 +557,40 @@
     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)
     {
         self.navigationController.navigationBarHidden = YES;
         self.localRecrodContraint.constant = 50;
-        self.toolBar.hidden = YES;
+//        self.toolBar.hidden = YES;
         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 - 37) constant:0];
+        [NSLayoutConstraint activateConstraints:@[self.scrollViewWHRatio]];
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [self.scrollView layoutIfNeeded];
+            [self.toolBar layoutIfNeeded];
+        });
     }
 }
 
@@ -819,14 +859,60 @@
 
 - (IBAction)large:(id)sender
 {
-    NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
-    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
+    if (_landscape == YES) {
+        [self largeBack:self.largeBackButton];
+        return;
+    }
+    NSLog(@"######杩涘叆妯睆锛�");
+    _landscape = YES;
+    if (@available(iOS 16.0, *)) {
+        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(@"######鏀跺洖妯睆锛�");
+    _landscape = NO;
+    if (@available(iOS 16.0, *)) {
+        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
@@ -1326,17 +1412,41 @@
     }
     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);
+//    lineImageView1.frame = CGRectMake(averageWidth, 7, lineImageView1.frame.size.width, lineImageView1.frame.size.height);
     [self.toolBar addSubview:lineImageView1];
+    [lineImageView1 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(self.playButton.mas_right);
+        make.centerY.mas_equalTo(self.playButton.mas_centerY);
+        make.width.mas_equalTo(lineImageView1.frame.size.width);
+        make.height.mas_equalTo(lineImageView1.frame.size.height);
+    }];
     UIImageView *lineImageView2 = [UIView dd_instanceVerticalLine:20 color:[UIColor grayColor]];
-    lineImageView2.frame = CGRectMake(averageWidth * 2, 7, lineImageView2.frame.size.width, lineImageView2.frame.size.height);
+//    lineImageView2.frame = CGRectMake(averageWidth * 2, 7, lineImageView2.frame.size.width, lineImageView2.frame.size.height);
     [self.toolBar addSubview:lineImageView2];
+    [lineImageView2 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(self.voiceButton.mas_right);
+        make.centerY.mas_equalTo(self.voiceButton.mas_centerY);
+        make.width.mas_equalTo(lineImageView2.frame.size.width);
+        make.height.mas_equalTo(lineImageView2.frame.size.height);
+    }];
     UIImageView *lineImageView3 = [UIView dd_instanceVerticalLine:20 color:[UIColor grayColor]];
-    lineImageView3.frame = CGRectMake(averageWidth * 3, 7, lineImageView3.frame.size.width, lineImageView3.frame.size.height);
+//    lineImageView3.frame = CGRectMake(averageWidth * 3, 7, lineImageView3.frame.size.width, lineImageView3.frame.size.height);
     [self.toolBar addSubview:lineImageView3];
+    [lineImageView3 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(self.qualityButton.mas_right);
+        make.centerY.mas_equalTo(self.qualityButton.mas_centerY);
+        make.width.mas_equalTo(lineImageView3.frame.size.width);
+        make.height.mas_equalTo(lineImageView3.frame.size.height);
+    }];
     UIImageView *lineImageView4 = [UIView dd_instanceVerticalLine:20 color:[UIColor grayColor]];
-    lineImageView4.frame = CGRectMake(averageWidth * 4, 7, lineImageView4.frame.size.width, lineImageView4.frame.size.height);
+//    lineImageView4.frame = CGRectMake(averageWidth * 4, 7, lineImageView4.frame.size.width, lineImageView4.frame.size.height);
     [self.toolBar addSubview:lineImageView4];
+    [lineImageView4 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(self.emptyButton.mas_right);
+        make.centerY.mas_equalTo(self.emptyButton.mas_centerY);
+        make.width.mas_equalTo(lineImageView4.frame.size.width);
+        make.height.mas_equalTo(lineImageView4.frame.size.height);
+    }];
 }
 
 
@@ -1437,5 +1547,8 @@
     }
 }
 
+- (BOOL)prefersHomeIndicatorAutoHidden {
+    return YES;
+}
 
 @end

--
Gitblit v1.8.0