custom container view controllerを作成しようとしています。子ビューの追加をアニメーション化するために標準ViewControllerTransitioning patternを使用したいと思いますが、ちょっと残念です。子ビューコントローラの数が変わる可能性があるので、私はこのコンテナビューコントローラをコードで完全に書いています。UIViewControllerTransitioningプロトコルを使用しているときにAutoLayout制約を作成する必要があります
私はすでにthis tutorialを見てきました。それは私を非常に助けてくれましたが、私はこのステップを理解できません。
新しい子ビューコントローラを追加する流れは次のように現在:コンテナビューコントローラが必要としないような位置決め/高さの制約は、コンテナビューに(とされる)を作成することができます
'MyContainerVc'.addNewSubViewController
Call UIViewController.addChildViewController
Create transitioning context
Fetch animator
Animate
'Container View'.addSubview
Create autolayout positioning/height constraints
子のvcsがコンテナvcにpreferredContentSize.width
を指定できるので、コンテナのビューコントローラで幅の制約を作成する必要があります。コンテナvcは、可能な限り子のvcsの優先順位を尊重し、可能な限り幅の制約に基づいています。
サブビューの幅の制約をいつ作成できるかわかりません。子ビューが表示される前に幅を定義する必要があるため、アニメーションを実行する前に制約を適用する必要があります。しかし、子ビューがサブビューとして追加される前にアクティブ化することはできません。また、アニメーションが完了した後にアクティブ化すると、アニメーション中にその幅が正しく定義されません。
アニメーターは、transitioningContext
のみを使用し、コンテナビューのaddSubview
メソッドを使用する必要があります。これは、アニメーション化されているトランジションの種類には関係しません。
また、addSubview
に自動レイアウト制約を作成するのが最善の方法ですか、それとも別の場所で行う必要がありますか。 didAddSubview
?
いくつかのアドバイスは非常に高く評価されています!