iOS 设置原生的tabcontroller,其中yitab为react的viewcontrller, 从react的controller push到原生界面,再从原生界面返回 react的view概率性的少了49(tabbar的高度)



  • 0_1502199157951_e09e72e7d3163b85ec9a1539a575f377.jpg

    iOS 设置原生的tabcontroller,其中yitab为react的viewcontrller, 从react的controller push到原生界面,再从原生界面返回 react的view概率性的少了49(tabbar的高度)

    如图, 底部空了49像素



  • 此回复已被删除!


  • 已解决, iOS11之前系统的bug, 可以重写RCTRootContentView的layoutSubviews解决

    • (void)layoutSubviews
      {
      [super layoutSubviews];

      void (^updateAvailableSize)() = ^{
      SEL selector = NSSelectorFromString(@"updateAvailableSize");
      if ([self respondsToSelector:selector]) {
      IMP imp = [self methodForSelector:selector];
      void (*func)(id, SEL) = (void *)imp;
      func(self, selector);
      }
      };

      if (@available(iOS 11.0, *)) {
      CGRect superBounds = [self.superview bounds];
      if (self.superview && CGRectEqualToRect(superBounds, self.frame)) {
      updateAvailableSize();
      }
      } else {
      updateAvailableSize();
      }
      }



  • iOS之后也遇到了同样的问题,viewcontrller会闪烁几次,最后或正常或少49像素,然后发现时RCTRootContentView上的子View(RN对应的view)发生了改变,但是并没有找到最终的解决办法