0

viewController をインスタンス化し、現在表示されているビューの背後に配置したいと考えています。次に、元のビューのフレームを移動して、その背後にあるビューを表示します。

最初に底面図を作成して、上面図を上に追加することはできません。複数のボトムビューを作成する予定ですが、メモリはスタック全体を一度に処理できません。

私がすでに遭遇した問題。

  • subView を追加して背面に送信するということは、元のビューのフレームを移動することは、新しいビューを表示するのではなく、ビュー全体を移動することを意味します。
  • 新しいビューをインスタンス化して呼び出すとpresentViewController、元のビューの割り当てが解除されます (モーダルに追加した場合)

誰でも助けることができますか?それとも私をある方向に導きますか?

4

2 に答える 2

1

vc2 が vc1 の下にあり、vc1 が邪魔にならないようにスライドしてそれを明らかにしたい場合に、vc1 から vc2 への移行を行っていると言っても過言ではありませんか?

もしそうなら、sdk の観点から異常または危険なことをしなくても、それは実行可能です。秘訣は、通常のインスタンス化と提示の手順を実行することですが、vc1 では、vc2 を提示する前に、vc1 のように見える UIImage を渡します。Vc2 は、その画像が表示される前にその画像で自分自身を覆い、画像を邪魔にならないようにスライドさせて自分自身を明らかにします。

手順は次のとおりです。

1) vc1 で、この投稿のメソッドを実装します。ビューのイメージをキャプチャします。

2) vc2 を提示したくなるアクションがいくつかあります。このようにしてください...

- (void)presentVc2:(id)sender {
    UIImage *image = [self makeImage];  // it was called makeImage in the other post, consider a better name
    MyViewController2 *vc2 = [[MyViewController2 alloc] initWithNibName:@"MyViewController2" bundle:nil];
    vc2.presentationImage = image;  // more on this later

    // this line will vary depending on if you're using a container vc, but the key is
    // to present vc2 with NO animation
    [self presentViewController:vc2 animated:NO completion:^{}];
}

3) MyViewController2 に presentationImage という UIImage プロパティを作成し、セッターを公開します。次にMyViewController2で...

// before we appear, cover with the last vc's image
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:self.presentationImage];
    imageView.frame = self.view.bounds;
    imageView.tag = 128;
    [self.view addSubview:imageView];
}

// after we appear, animate the removal of that image
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    UIImageView *imageView = (UIImageView *)[self.view viewWithTag:128];
    [UIView animateWithDuration:0.5 animations:^{
        imageView.frame = CGRectOffset(imageView.frame, -self.frame.size.width, 0); 
    }];
}
于 2013-01-09T23:14:09.277 に答える
0

トップビューのコンテンツを、ビューコントローラのビューのフレームと同じフレームの新しいUIViewに配置するだけです。次に、下部のビューをコンテナビューの下に貼り付けます。次に、コンテナビューを移動すると、そのすべてのコンテンツが移動しますが、下部のビューはそのまま残ります。

于 2013-01-09T22:27:58.160 に答える