これは明らかな質問かもしれませんが、この問題の正しい解決策がわかりません。カスタム セグエ クラスがあります。これは、目的のコントローラーに正常に移行するという点で機能します。宛先コントローラーでは、いくつかのサブビューの位置を取得し、後で使用できるように保存する必要があります。私は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];
}