ソースシーンに存在するボタンを使ってデスティネーションシーンを分割したいと思います。私はviewcontroller(私は右から左に2つのビューをアニメーション化したい)の間のトランジションアニメーションのコントロールを持っていると思います。それは、置換のsegueを通じてそうすることは可能ですか?私は、セグーとプッシュセグを交換しようとしますが、セグーはそこに進むべきではありません。ありがとう!どのようにストーリーボードのUIButtonからカスタムセグ(モーダルセグ)を実行しますか
4
A
答えて
8
置き換えがマスターコントローラとナビゲーションコントローラのプッシュセグだけで使用できるように見えるため、segueとpush segueの置き換えが誤解を招くことがありました。この場合、代わりにカスタムセグを実装する必要がありました。 UIStoryboardSegueをサブクラス化し、実行セグをオーバーライドする必要があります。ここで
は、例えば私のコードのである:
-(void)perform{
UIView *sourceView = [[self sourceViewController] view];
UIView *destinationView = [[self destinationViewController] view];
UIImageView *sourceImageView;
sourceImageView = [[UIImageView alloc]
initWithImage:[sourceView pw_imageSnapshot]];
// force the destination to be in landscape before screenshot
destinationView.frame = CGRectMake(0, 0, 1024, 748);
CGRect originalFrame = destinationView.frame;
CGRect offsetFrame = CGRectOffset(originalFrame, originalFrame.size.width, 0);
UIImageView *destinationImageView;
destinationImageView = [[UIImageView alloc]
initWithImage:[destinationView pw_imageSnapshot]];
destinationImageView.frame = offsetFrame;
[self.sourceViewController presentModalViewController:self.destinationViewController animated:NO];
[destinationView addSubview:sourceImageView];
[destinationView addSubview:destinationImageView];
void (^animations)(void) =^{
[destinationImageView setFrame:originalFrame];
};
void (^completion)(BOOL) = ^(BOOL finished) {
if (finished) {
[sourceImageView removeFromSuperview];
[destinationImageView removeFromSuperview];
}
};
[UIView animateWithDuration:kAnimationDuration delay:.0 options:UIViewAnimationOptionCurveEaseOut animations:animations completion:completion];
}
主な考え方は、送信元と送信先のシーンのスクリーンショットビューを作成することです。それらをデスティネーションシーンビューに追加し、それらの2つのビューのアニメーションを制御し、sourceviewControllerのpresentModalViewController関数を呼び出し、アニメーションの終了時に2つのスクリーンショットビューを削除します。
このリンクのCh15でスクリーンショットユーティリティ機能を実装する例があります。http://learnipadprogramming.com/source-code/
関連する問題
- 1. どのように左から右にUIButtonフレームをアニメーション化し、
- 2. Xcodeはメインのストーリーボードをどのようにロードしますか?
- 3. IBDesignable UIButtonが埋め込まれたUIViewでは、どのようにアクションをストーリーボードに組み込みますか?
- 4. Echoコマンドを実行してから実行しますか? (makeのように)
- 5. 別のクラスからJavaクラスをどのように実行しますか?
- 6. ストーリーボードとスウィフト2.2 Mac Appカスタムセグはビューコントローラーを置き換えます
- 7. rakeタスクからMySQLクエリをどのように実行しますか?
- 8. Javaサーブレットから外部コマンドをどのように実行しますか?
- 9. C++プログラムからPythonスクリプトをどのように実行しますか?
- 10. bashスクリプトからSQLをどのように実行しますか?
- 11. どのようにsshからPHPファイルを実行しますか?
- 12. ibtoolは、ストーリーボードのコンパイルとリンクフェーズで何を行い、リンクされたストーリーボードの結果が実行可能ファイルでどのように機能しますか?
- 13. Xcode iOS:GLKitビューをどのようにストーリーボードから取得するのですか?
- 14. System.Diagnostics.Processの実行をどのようにスピードアップしますか?
- 15. Java:どのようにこのプログラムを実行しますか?
- 16. s3バケットのディープコピーをどのように実行しますか?
- 17. スレッドは実行状態から実行可能状態にどのように移行しますか?
- 18. Pythonスレッドの実行はどのように引数を実行しますか?
- 19. ストーリーボードのXmlはどのように作成されますか?
- 20. どのように行をUITableViewから削除しますか?
- 21. どのようにこれらのjavascriptモジュールパターンを実行しますか?
- 22. どのように対話型のようにバットファイルを実行しますか?
- 23. Herokuでユーティリティサービスをどのように実行しますか?
- 24. Javascript Setでマップをどのように実行しますか?
- 25. JQuery Sortableでどのようにリセットを実行しますか
- 26. シバンはどのようにプログラムを実行しますか?
- 27. どのようにコードを同期で実行しますか?
- 28. Androidモバイルはどのようにアプリケーションを実行しますか?
- 29. ブラウザでmochaテストをどのように実行しますか?
- 30. WindowsでVimをどのように実行しますか?