在ios 8.4中展示SKStoreProductViewController后,状态栏背景为nil

时间:2015-08-14 13:37:26

标签: objective-c uinavigationcontroller uistatusbar appstore-sandbox ios8.4

我正在使用SKStoreProductViewController在我的应用中打开appstore。它呈现成功,但其中的状态栏未显示,Navbar看起来像44像素的高度。但它不会在任何设备的任何iOS 8.3v中发生。 这种情况仅在所有iOS 8.4v设备中发生。

在我的plist中,UIViewControllerBasedStatusbarAppearance设置为NO。我也尝试过,但没用。

enter image description here

状态栏中的红色是超级视图导航栏颜色。

注意:我正在从ParentViewController呈现SKStoreProductViewController。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我通过添加statusBar作为UIView组件解决了这个问题,它解决了这个问题。我也遇到了类似的问题。

   SKStoreProductViewController *_apsvc = [[SKStoreProductViewController alloc]init];
    _apsvc.delegate = self;

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        UIView *addStatusBar = [[UIView alloc] init];

        //change this to match your navigation bar

        UIViewController* viewController = [UIApplication sharedApplication].keyWindow.rootViewController;

        addStatusBar.frame = CGRectMake(0, 0, viewController.view.frame.size.width, 20);

        addStatusBar.backgroundColor =[UIColor whiteColor];


    }


    UIViewController* viewController = [UIApplication sharedApplication].keyWindow.rootViewController;
    if (viewController)
    {
        [[UIApplication sharedApplication].keyWindow.rootViewController  presentViewController:_apsvc animated:YES completion:^()
         {

             [_apsvc loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier : AppID}
                  completionBlock:^(BOOL result, NSError *error) {
                      if(error)
                      {
                         ....
                      }
                  }];
              [viewController.view addSubview:addStatusBar];

         }];

    }

}


    -(void)productViewControllerDidFinish:(SKStoreProductViewController    *)viewController
   {
        [addStatusBar removeFromSuperview];
       if (viewController)
       { 
       [viewController dismissViewControllerAnimated:YES completion:nil];
       }
    }