0

これは明らかな質問かもしれませんが、この問題の正しい解決策がわかりません。カスタム セグエ クラスがあります。これは、目的のコントローラーに正常に移行するという点で機能します。宛先コントローラーでは、いくつかのサブビューの位置を取得し、後で使用できるように保存する必要があります。私はViewDidAppearでこれをやっています。このコードは、標準のセグエを使用すると機能しますが、カスタム セグエを使用すると位置が {0, 0} に解決されます。ただし、境界線を引くなど、サブビューに対して他のことを行うことはできます。

宛先ビューのコード:

-(void)viewDidAppear:(BOOL)animated
{
   [super viewDidAppear:animated];

   for (UIView * view in self.videos) {
       [self.origCenter setObject:[NSValue valueWithCGPoint:[view.superview convertPoint:view.center toView:view.superview]]
                        forKey:[NSValue valueWithNonretainedObject:view]];
    view.layer.borderColor = [UIColor redColor].CGColor;
    view.layer.borderWidth = 3.0f;
   }
}

カスタム セグエのコード:

-(void)perform {

    UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
    UIViewController *destinationController = (UIViewController*)[self destinationViewController];
    [sourceViewController.view addSubview:destinationController.view];

    CATransition* transition = [CATransition animation];
    transition.duration = .25;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush; 
    transition.subtype = kCATransitionFromRight; 

    [sourceViewController.navigationController.view.layer addAnimation:transition forKey:kCATransition];

    [[self sourceViewController] presentModalViewController:[self destinationViewController] animated:NO];

}
4

0 に答える 0