SKStoreProductViewController 和 GKHostedAuthenticateViewController 没有 iPhone 横向模式



我正在实现 StoreKit 应用内应用购买界面,虽然看起来SKStoreProductViewController在 iPad 上处理横向,但它似乎不适用于我在 iPhone 上的应用程序(它是通用的)。

SKStoreProductViewController的界面非常有限,我似乎无法以任何方式操纵VC还有其他人遇到过这种情况吗? 有什么解决方法吗?

当我运行在iPad上运行的代码时,SKStoreProductViewController从左侧进入,大约一英寸,并挂在那里,直到关闭。 它似乎功能正常,但它搞砸了在解雇时弹出它的 VC。

代码如下:

// Set up the store vc (creating it if not already done)
if (self.storeVC == nil) self.storeVC = [[SKStoreProductViewController alloc] init];
self.storeVC.delegate = self;
NSDictionary *params = [NSDictionary dictionaryWithObject:appID forKey:SKStoreProductParameterITunesItemIdentifier]; 
// Set up a HUD in case connecting to the store takes a while
[MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
[self.storeVC loadProductWithParameters:params
                        completionBlock:^(BOOL result, NSError *error) {
       [MBProgressHUD hideHUDForView:self.view animated:YES];
       if (result) {
           [self presentViewController:self.storeVC animated:NO completion:^{
           }];
       }
  }];

更好的是,我们在GKHostedAuthenticateViewController上遇到了同样的问题,即从该方法返回的视图控制器:

GKLocalPlayer.authenticateHandler = ^(UIViewController *loginVC, NSError *error) {};

重申一下:这两者都在iPhone(但不是iPad)上处于纵向模式,并且它们强制UI进入纵向模式。 返回后,应用的 UI 被搞砸了。

我遇到了类似的问题。我的通用应用程序是横向的,但是虽然SKStoreProductViewController在iPad上的横向运行良好,但它在iPhone上会出现视觉故障。

我的解决方案是迫使iPhone以纵向方式展示SKStoreProductViewController。有点可悲的是,它与应用程序其余部分的方向不同,但它比切断一半的屏幕要好。

我通过使用下面的自定义子类完成了此操作:

@interface SKPortraitStoreProductViewController : SKStoreProductViewController
@end
@implementation SKPortraitStoreProductViewController
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
        return UIInterfaceOrientationPortrait;
    else
        return [super preferredInterfaceOrientationForPresentation];
}
@end

在显示SKStoreProductViewController之前,请尝试更改modalPresentationStyle属性。

我运气很好,将其设置为 UIModalPresentationPageSheet 这似乎很好地覆盖了横向 iPad 外壳。

最新更新