0

こんにちは、2 つのビュー コントローラー間にカスタム トランジションがあり、トランジション時にそれらの間の黒いギャップを削除したいと考えています。これを行うにはどうすればよいですか? ありがとうございました!CATransition とギャップの写真を使用して現在どのように遷移が実行されているかを次に示します。ここに画像の説明を入力

- (void)bottomButtonScreen4:(UIGestureRecognizer *)gestureRecognizer {
    NSLog(@"Swipe Up Worked");

    settingsViewController = [[SettingsViewController alloc] init];

    CATransition* transition = [CATransition animation];
    transition.duration = 0.5;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromTop;
    [self.navigationController.view.layer addAnimation:transition forKey:nil];

    settingsViewController = [self.storyboard instantiateViewControllerWithIdentifier: @"settingView"];

    [self.navigationController pushViewController:settingsViewController animated:NO];

}
4

1 に答える 1

0

このトランジションを使用して、できることは限られています。新しいビューが移動するにつれて、それもフェードインし、外向きのビューがフェードアウトしていることに気付くでしょう (十分に遅くすると)。ウィンドウの背景色を着信ビューの背景色と同じ色に設定することで黒いバーを取り除くことができますが、発信コントローラーのビューが消えるとその色にフェードすることもわかります。それをチェックして、それがあなたが一緒に暮らすことができる外観かどうかを確認してください.

self.view.window.backgroundColor = settingsViewController.view.backgroundColor;

PS init settingsViewController を割り当てる行を削除する必要があります。今は何もしていませんが、とにかくそのインスタンスを取得する方法が間違っていました。

編集後:

黒いバーの問題を取り除く別の方法は、次のように animateWithDuration を使用することです。

-(IBAction) pushViewControllerFromTop {
    CGFloat height = self.view.bounds.size.height;
    UIViewController *settingsViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Blue"];
    settingsViewController.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y - height, self.view.frame.size.width, self.view.frame.size.height);
    [self.view.superview addSubview:settingsViewController.view];
    [UIView animateWithDuration:.5 animations:^{
        self.view.center = CGPointMake(self.view.center.x, self.view.center.y + height);
        settingsViewController.view.center = CGPointMake(settingsViewController.view.center.x, settingsViewController.view.center.y + height);

    } completion:^(BOOL finished) {
        [self.navigationController pushViewController:settingsViewController animated:NO];
    }];
}
于 2013-08-12T15:28:00.420 に答える