【问题标题】:SKStoreProductViewController and GKHostedAuthenticateViewController don't have iPhone landscape modesSKStoreProductViewController 和 GKHostedAuthenticateViewController 没有 iPhone 横向模式
【发布时间】:2012-10-13 02:03:48
【问题描述】:

我正在实现 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 就混乱了。

【问题讨论】:

  • 我刚刚遇到了类似的问题。我正在以仅横向模式制作 iPhone 应用程序。启动 SKStoreProductViewController 以查看商店中的另一个 iOS 应用程序 - SKStoreProductViewController 看起来不太好 - 有三个选项卡可以选择以下滚动视图的内容。滚动视图没有使用完整的横向宽度,这使它看起来...half-assed,我认为没有其他词可以形容它。
  • @Jonny 更重要的是,在最新的 ios 7 上,skstoreproductviewcontroller 实际上在横向模式下崩溃

标签: iphone ios6 landscape gamekit storekit


【解决方案1】:

我遇到了类似的问题。我的通用应用程序是横向的,但是虽然 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

【讨论】:

  • 但应用程序在 iphone iOS 7 上崩溃。我仍在寻找解决方案。
  • 我也是。有没有人在横向应用程序的 iOS 7 上成功使用 SKStoreProductViewController?
【解决方案2】:

在呈现之前尝试更改 SKStoreProductViewController 上的 modalPresentationStyle 属性。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-10
    • 2011-01-04
    • 2013-05-12
    • 2013-11-13
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多