SKStoreProductViewController和GKHostedAuthenticateViewController没有iPhone横向模式

Gab*_*uto 10 iphone landscape storekit gamekit ios6

我正在实施StoreKit应用内应用程序购买界面,虽然看起来SKStoreProductViewControlleriPad上的手柄风景,但我的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:^{
           }];
       }
  }];
Run Code Online (Sandbox Code Playgroud)

更好的是,我们遇到了同样的问题,GKHostedAuthenticateViewController即从方法返回的viewcontroller:

GKLocalPlayer.authenticateHandler = ^(UIViewController *loginVC, NSError *error) {};
Run Code Online (Sandbox Code Playgroud)

重申一下:这两个都是在iPhone上的纵向模式(但不是iPad),它们强制用户界面进入纵向模式.返回后,您的应用的用户界面搞砸了.

小智 5

我遇到了类似的问题.我的通用应用程序是横向的,但是虽然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
Run Code Online (Sandbox Code Playgroud)