質問

カスタムセグメントを使用して2つのビューコントローラの間で解散しようとしていますが、セグメントは正しく開始され、意図したようにアニメーションを実行します。。アニメーションが宛先ビューコントローラを完了したら、そのランドスケープレイアウトに「スナップ」します。両方のビューコントローラは自動レイアウトを使用して設定されています。

下記P>カスタムセグーの「実行」方式:

- (void)perform
{
  UIViewController *srcController = self.sourceViewController;
  UIViewController *dstController = self.destinationViewController;
  dstController.view.transform = srcController.view.transform;

  [UIView transitionFromView:srcController.view 
                      toView:dstController.view 
                    duration:self.animationDuration 
                     options:self.animationOptions 
                  completion:self.animationCompletionBlock];
}
.

目的地の表示コントローラを手動で表示するには、表示される前にオートレイアウトをトリガーするように指示する必要がありますか?もしそうなら、これはどのように実行されるでしょうか?クロス解消で内蔵セグメントを使用すると、この問題が発生しているようには見えません(成功せずに)、私のカスタムセグューがそうではないことを判断しました。

これはしばらくの間停止しました、あらゆる助けが高く、より多くの詳細が必要かどうか教えてください。

役に立ちましたか?

解決

だからこの問題に対する解決策は私が想像したよりも簡単だったことがわかりました。次の行を追加することで、デスティネーションビューコントローラがその要素をレイアウトしたときに右の境界を持ちます。

dstController.view.bounds = srcController.view.bounds;
.

その他のコードは次のようになります。

- (void)perform
{
  UIViewController *srcController = self.sourceViewController;
  UIViewController *dstController = self.destinationViewController;
  dstController.view.transform = srcController.view.transform;
  dstController.view.bounds = srcController.view.bounds;

  [UIView transitionFromView:srcController.view 
                      toView:dstController.view 
                    duration:self.animationDuration 
                     options:self.animationOptions 
                  completion:self.animationCompletionBlock];
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top