Q:

Custom ViewController Transition Remove Gap Between Views

Hi I have a custom transition between two view controllers and I want to remove the black gap between them when it makes the transition.  What can I do to do this?  Thank you!  Here is how the transition is performed currently with a CATransition and a picture of the gap. 
- (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];

}

A:

Using this transition, there's only so  much you can do. You'll notice (if you make it slow enough) that as the new view moves in, it's also fading in and the outgoing view is fading out. You can get rid of the black bar by setting the window's background color to the same color as your incoming view's background color, but you'll also see the outgoing controller's view fade to that color as it goes out. Check that out, and see if that's a look you can live with.
self.view.window.backgroundColor = settingsViewController.view.backgroundColor;

P.S. You should get rid of the line where you alloc init settingsViewController. It isn't doing anything now, and it was the wrong way to get that instance anyway.
After Edit:
Another way to do this that gets rid of the black bar problem, is to use animateWithDuration like this:
-(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];
    }];
}

