SKStoreProductViewControllerを表示し、いくつかの制約の競合が発生しました。以前に有効化された制約が再アクティブ化されていることを確認できます。なぜこのようなことが起こるのか分かりません。SKStoreProductViewControllerを表示すると、非アクティブな制約が再アクティブ化されます。
*** ———>
<———— ***
と表示されています。
唯一の可能性は私が考えることができます:私のアプリはランドスケープ専用なので、SKStoreProductViewController.shouldAutorotateをサブクラス化してfalseを返す必要があります。
class MyProductViewController : SKStoreProductViewController {
override var shouldAutorotate: Bool {
return false
}
}
func openStoreProduct(identifier: String) {
let storeViewController = MyProductViewController()
storeViewController.delegate = self
let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) in
if loaded {
print("In: \(self?.myConstraint.isActive)")
// *** ———> Prints "In: false". <——— ***
self?.present(storeViewController, animated: true) {
}
}
}
func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
print("Out: \(self.myConstraint.isActive)")
// *** ———> prints "Out: true" <——— ***
viewController.dismiss(animated: true, completion: nil)
}
StoreViewControllerに行くと、かなり多くのレイアウトプロパティが混乱することが分かりました。これは、StoreViewControllerがかなりの数のレイアウトプロパティで混乱することが判明しました。これは補償する必要があります(つまりハッキングされている)。上記の場合、IBの制約を解除すると問題が解決しました。あなたの質問への回答が有効になったときに、完全なソリューションの概要を説明します。 –