lxy 2 years ago
parent
commit
4e721c007e

+ 2 - 0
SDK/LenzCameraNativeModuleForRN/LenzCameraNativeModuleForRN/Classes/inner/PCSBaseViewController/PCSBaseViewController.m

@@ -844,6 +844,8 @@
 }
 - (void)stopMotion {
     [self.motionManager stopDeviceMotionUpdates];
+    self.startPitchX = nil;
+    self.startRollY = nil;
     LenVideoStitchDirction dir = (LenVideoStitchDirction)self.panoramOrientationGuideView.selectedItemIndex;
     [self.panoramaGuideView updateArrowWith:PanoramaArrowDirCenter dir:dir];
 }

+ 52 - 17
SDK/LenzCameraNativeModuleForRN/LenzCameraNativeModuleForRN/Classes/inner/UI/PanoramaGuideView/PanoramaGuideView.m

@@ -45,6 +45,8 @@ CGFloat const PanoramaGuideViewWOrH = 120;
 @property (nonatomic) UIImageView *showImageView;
 @property (nonatomic) PanoramaArrowDir lastArrowDir;
 
+@property (nonatomic) NSNumber *offSetTop;
+@property (nonatomic) NSNumber *offSetLeft;
 
 @end
 
@@ -54,6 +56,8 @@ CGFloat const PanoramaGuideViewWOrH = 120;
     self = [super init];
     self.backgroundColor = [UIColor jk_colorWithHexString:@"#000000" andAlpha:0.5];
     [self addSubview:self.showImageView];
+    self.offSetTop = @((120-38)/2);
+    self.offSetLeft = @((120-38)/2);
     return self;
 }
 
@@ -258,7 +262,8 @@ CGFloat const PanoramaGuideViewWOrH = 120;
                     }];
                     [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                         make.bottom.offset(-imageWH);
-                        make.centerX.mas_equalTo(self);
+                        make.left.mas_equalTo(self.offSetLeft.doubleValue);
+//                        make.centerX.mas_equalTo(self);
                     }];
                 }
                     break;
@@ -270,7 +275,9 @@ CGFloat const PanoramaGuideViewWOrH = 120;
                     }];
                     [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                         make.top.offset(imageWH);
-                        make.centerX.mas_equalTo(self);
+//                        make.centerX.mas_equalTo(self);
+                        make.left.mas_equalTo(self.offSetLeft.doubleValue);
+
                     }];
                             
                 }
@@ -284,7 +291,9 @@ CGFloat const PanoramaGuideViewWOrH = 120;
                     
                     [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                         make.right.offset(-imageWH);
-                        make.centerY.mas_equalTo(self);
+//                        make.centerY.mas_equalTo(self);
+                        make.top.mas_equalTo(self.offSetTop.doubleValue);
+
                     }];
                 }
                     break;
@@ -298,7 +307,9 @@ CGFloat const PanoramaGuideViewWOrH = 120;
                     
                     [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                         make.left.offset(imageWH);
-                        make.centerY.mas_equalTo(self);
+//                        make.centerY.mas_equalTo(self);
+                        make.top.mas_equalTo(self.offSetTop.doubleValue);
+
                     }];
                 }
                     
@@ -317,40 +328,52 @@ CGFloat const PanoramaGuideViewWOrH = 120;
 }
 
 - (void)updateArrowWith:(PanoramaArrowDir)arrowDir dir:(PanoramaOrientationViewDirectionEnum)dir {
-    if (self.lastArrowDir == arrowDir) {
-        return;
-    }
-    self.lastArrowDir = arrowDir;
+
+//    self.lastArrowDir = arrowDir;
     dispatch_async(dispatch_get_main_queue(), ^{
         if (!self.showImageView.image) {
             return;
         }
         CGFloat imageWidth = self.showImageView.image.size.width;
         CGFloat imageHight = self.showImageView.image.size.height;
-        if (dir == PanoramaOrientationViewDown) {
+        if (dir == PanoramaOrientationViewDown || dir == PanoramaOrientationViewUp) {
             if (arrowDir == PanoramaArrowDirCenter) {
+                self.offSetLeft = @((120-38)/2);
                 [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                     make.bottom.offset(-(PanoramaGuideViewWOrH * imageWidth)/imageHight);
-                    make.centerX.mas_equalTo(self);
+//                    make.centerX.mas_equalTo(self);
+                    make.left.mas_offset(self.offSetLeft.doubleValue);
                 }];
             } else if (arrowDir == PanoramaArrowDirLeft) {
+                self.offSetLeft = @(0);
                 [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                     make.bottom.offset(-(PanoramaGuideViewWOrH * imageWidth)/imageHight);
-                    make.left.mas_equalTo(self).mas_offset(10);
+//                    make.left.mas_equalTo(self).mas_offset(10);
+                    make.left.mas_offset(self.offSetLeft.doubleValue);
+
                 }];
             } else if (arrowDir == PanoramaArrowDirRight) {
+                self.offSetLeft = @(120-38);
+
                 [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                     make.bottom.offset(-(PanoramaGuideViewWOrH * imageWidth)/imageHight);
-                    make.right.mas_equalTo(self).mas_offset(-10);
+//                    make.right.mas_equalTo(self).mas_offset(-10);
+                    make.left.mas_offset(self.offSetLeft.doubleValue);
+
                 }];
             }
         } else if (dir == PanoramaOrientationViewUp) {
             if (arrowDir == PanoramaArrowDirCenter) {
+                self.offSetTop = @((120-38)/2);
+
                 [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                     make.top.offset((PanoramaGuideViewWOrH * imageWidth)/imageHight);
-                    make.centerX.mas_equalTo(self);
+//                    make.centerX.mas_equalTo(self);
+                    make.top.mas_offset(self.offSetTop.doubleValue);
                 }];
             } else if (arrowDir == PanoramaArrowDirLeft) {
+                self.offSetTop = @((120-38)/2);
+
                 [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                     make.top.offset((PanoramaGuideViewWOrH * imageWidth)/imageHight);
                     make.left.mas_equalTo(self).mas_offset(10);
@@ -362,21 +385,33 @@ CGFloat const PanoramaGuideViewWOrH = 120;
                 }];
             }
             
-        } else if (dir == PanoramaOrientationViewLeft) {
+        } else if (dir == PanoramaOrientationViewLeft || dir == PanoramaOrientationViewRight) {
             if (arrowDir == PanoramaArrowDirCenter) {
+                self.offSetTop = @((120-38)/2);
+
                 [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                     make.left.offset((PanoramaGuideViewWOrH * imageWidth)/imageHight);
-                    make.centerY.mas_equalTo(self);
+//                    make.centerY.mas_equalTo(self);
+                    make.top.mas_offset(self.offSetTop.doubleValue);
+
                 }];
             } else if (arrowDir == PanoramaArrowDirUp) {
+                self.offSetTop = @(0);
+
                 [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                     make.left.offset((PanoramaGuideViewWOrH * imageWidth)/imageHight);
-                    make.top.mas_equalTo(self).mas_offset(10);
+//                    make.top.mas_equalTo(self).mas_offset(10);
+                    make.top.mas_offset(self.offSetTop.doubleValue);
+
                 }];
             } else if (arrowDir == PanoramaArrowDirDown) {
+                self.offSetTop = @(120-38);
+
                 [self.whiteArrow mas_remakeConstraints:^(MASConstraintMaker *make) {
                     make.left.offset((PanoramaGuideViewWOrH * imageWidth)/imageHight);
-                    make.bottom.mas_equalTo(self).mas_offset(-10);
+//                    make.bottom.mas_equalTo(self).mas_offset(-10);
+                    make.top.mas_offset(self.offSetTop.doubleValue);
+
                 }];
             }