呈现没有动画的 SKStoreProductViewController

Posted

技术标签:

【中文标题】呈现没有动画的 SKStoreProductViewController【英文标题】:Present SKStoreProductViewController with no animation 【发布时间】:2017-05-10 07:02:45 【问题描述】:

我正在尝试呈现SKStoreProductViewController 没有动画的实例。

来自视图控制器 StoreKit 的代码片段来自:

Objective-C

SKStoreProductViewController *storeProductVC = [[SKStoreProductViewController alloc] init];
[storeProductVC loadProductWithParameters: <PARAMETERS> completionBlock: nil];

[self presentViewController: storeProductVC animated: NO completion: nil];

斯威夫特

let storeProductVC = SKStoreProductViewController()
storeProductVC.loadProduct(withParameters: <PARAMETERS>, completionBlock: nil)

self.present(storeProductVC, animated: false, completion: nil)

animated 标志传递NO 无效。 StoreKit 视图控制器仍然显示动画。我知道 Apple 框架的主题是允许最少的自定义,但我希望不是这样。

【问题讨论】:

你在loadProduct的完成块内调用present 这并不能解决我的问题。是否在完成块中显示SKStoreProductViewController 更多的是用户体验决定。 【参考方案1】:

您可以在单独的 UIWindow 中不显示动画。

Objective-C

SKStoreProductViewController *storeProductVC = [[SKStoreProductViewController alloc] init];
[storeProductVC loadProductWithParameters: <PARAMETERS> completionBlock: nil];

UIScreen *mainScreen = [UIScreen mainScreen];

// Note: storeKitWindow should be strongly held, i.e. a property
self.storeKitWindow = [[UIWindow alloc] initWithFrame: mainScreen.bounds];
self.storeKitWindow.screen = mainScreen;
self.storeKitWindow.windowLevel = UIWindowLevelStatusBar;
self.storeKitWindow.rootViewController = storeProductVC;

[self.storeKitWindow makeKeyAndVisible];

斯威夫特

let storeProductVC = SKStoreProductViewController()
storeProductVC.loadProduct(withParameters: [:], completionBlock: nil)

let mainScreen = UIScreen.main

// Note: storeKitWindow should be strongly held, i.e. a property
storeKitWindow = UIWindow(frame: mainScreen.bounds)
storeKitWindow.screen = mainScreen
storeKitWindow.windowLevel = UIWindowLevelStatusBar
storeKitWindow.rootViewController = storeProductVC

storeKitWindow.makeKeyAndVisible()

【讨论】:

以上是关于呈现没有动画的 SKStoreProductViewController的主要内容,如果未能解决你的问题,请参考以下文章

呈现与模型(隐式动画)

在没有动画的情况下关闭视图控制器后立即呈现视图控制器

用动画呈现视图

无法在没有动画的情况下呈现和关闭视图控制器并获得不平衡调用以开始/结束外观转换

动画效果呈现

在动画呈现控制器视图的同时动画呈现控制器视图