2015-07-15 5 views
0

Я пытаюсь выполнить пользовательский переход между двумя контроллерами представления. Все работает отлично, за исключением того, что в конце анимации я могу увидеть, как источник ViewController мигает на короткое время (очень короткое). Это происходит не каждый раз.Источник ViewController мигает после пользовательского segue

.h файл:

#import <UIKit/UIKit.h> 

@interface HorizontalSegue : UIStoryboardSegue 

@property CGPoint originatingPoint; 

@end 

.m файл:

#import "HorizontalSegue.h" 

@implementation HorizontalSegue 

- (void)perform { 
    UIViewController *sourceViewController = self.sourceViewController; 
    UIViewController *destinationViewController = self.destinationViewController; 

    // Add the destination view as a subview, temporarily 
    [sourceViewController.view addSubview:destinationViewController.view]; 

    // Store original centre point of the destination view 
    CGPoint originalCenter = destinationViewController.view.center; 

    // Set center to start point of the button 
    destinationViewController.view.center = CGPointMake(self.originatingPoint.x*3, self.originatingPoint.y); 

    [UIView animateWithDuration:0.5 
          delay:0.0 
         options:UIViewAnimationOptionCurveEaseInOut 
        animations:^{ 
         destinationViewController.view.center = originalCenter; 
        } 
        completion:^(BOOL finished){ 
         [destinationViewController.view removeFromSuperview]; // remove from temp super view 
         [sourceViewController presentViewController:destinationViewController animated:NO completion:NULL]; // present VC 
        }]; 
} 

@end 

Есть ли способ, чтобы избавиться от этой вспышки? Я попробовал некоторые из решений, представленных для подобных проблем, но ничего не работает.

ответ

0

Вы не должны показывать, что такое viewcontroller, добавляя subviews адресата в текущий и делая аниматинос с ними. При переходе от одного контроллера к другому, который требуется SDK, существует много логики, поэтому важно следить за руководствами Apple.

С момента выхода iOS7.0 появился новый способ показать контроллер с анимацией через UIViewControllerTransitioningDelegate (который является @property всех UIViewControllers), который позволяет вам делать какие-либо анимации.

Есть много учебников, как этот

http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/

Однако, если вы хотите сохранить со старым способом вложения контроллеров вручную, вы должны проверить «Добавление и удаление Ребенка» здесь: https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

Смежные вопросы