2

iOSのSpringboardのアプリ切り替えドロワーと非常によく似た機能をアプリに追加する作業をしています。別のビューが下に表示されるように、ビューのy座標を上にアニメーション化するボタンを押すことができるようにしたいと思います。私が言ったように、iOSのホームボタンのダブルタップ機能と非常によく似ています。

いくつか見て回った後、両方のサブビューコントローラーを1つの親ビューコントローラーにラップする必要があるようです。

どうすればこれを行うことができますか?既存のViewControllerはかなり複雑なので、どこから始めればよいかわからない。

4

2 に答える 2

2

これを行うには、親のViewControllerを使用する必要があるかどうかわかりません。このコードは、私があなたが望むと思うことをするのに役立ちました。底面ビューが表示されたかどうかを追跡するためのBOOLivarが1つあり、メインビューの同じボタンを使用して2つの状態を切り替えます。

-(IBAction)slideInController:(UIButton *) sender {
    if (viewRevealed == NO) {
        next = [self.storyboard instantiateViewControllerWithIdentifier:@"Blue"];
        next.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y + self.view.frame.size.height, self.view.frame.size.width, 100); // my NextController's view was made 100 points high in IB.
        [self.view.window addSubview:next.view];
        [UIView animateWithDuration:.6 animations:^{
            self.view.center = CGPointMake(self.view.center.x, self.view.center.y - 100);
            next.view.center = CGPointMake(next.view.center.x, next.view.center.y - 100);
        } completion:^(BOOL finished) {
            viewRevealed = YES;
        }];
    }else{
        [UIView animateWithDuration:.6 animations:^{
            self.view.center = CGPointMake(self.view.center.x, self.view.center.y + 100);
            next.view.center = CGPointMake(next.view.center.x, next.view.center.y + 100);
        } completion:^(BOOL finished) {
            [next.view removeFromSuperview];
            viewRevealed = NO;
        }];
    }
}

私は通常、この種のことを行うためにコンテナビューコントローラを使用しますが、これは機能し、非常に簡単です。

于 2013-01-10T04:33:54.137 に答える
0

UINavigationControllerを使用し、ボタンをタップしたら新しいViewControllerを押すことをお勧めします。したがって、さまざまなオプションを持つメインのUIViewControllerがあります。そのボタンをタップすると、View Controllerのインスタンスが作成され、そのViewControllerがスタックの一番上にプッシュされます。コードは次のようになります

-(IBAction)ViewControllerOneTapped:(id)sender
{   
    UIViewController *vcOne = [[UIViewController alloc] initWithNibName:@"ViewControllerOne" bundle:nil];
    [self.navigationController pushViewController:vcOne animated:YES];
}

最終的なコードは、誰かがあなたのために書き出すことができるよりもはるかに複雑になりますが、これはおそらくあなたが取りたい一般的な方向です。

于 2013-01-10T03:57:06.173 に答える