ios - 自定义 Storyboard转场

标签 ios objective-c segue

我有一个自定义 Storyboard转场动画,但它没有按照我想要的方式显示。我希望它“推开”当前 View Controller 及其旁边的新 View Controller ,而不是“删除” View Controller 。 (不像推送转场,更像是在照片应用程序中滑动照片时看到的效果)。有任何想法吗?谢谢。

- (void)perform {

UIViewController *currentViewController = self.sourceViewController;
UIViewController *newViewController = self.destinationViewController;


[currentViewController.view addSubview:newViewController.view];


newViewController.view.transform = CGAffineTransformMakeScale(0.05, 0.05);


CGPoint originalCenter = newViewController.view.center;

newViewController.view.center = self.originatingPoint;

[UIView animateWithDuration:1.9
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseInOut
                 animations:^{

                     newViewController.view.transform = CGAffineTransformMakeScale(1.0, 100.0);
                     newViewController.view.center = originalCenter;
                 }
                 completion:^(BOOL finished){
                     [newViewController.view removeFromSuperview]; // remove from temp super view
                     [currentViewController presentViewController:newViewController animated:NO completion:NULL]; // present VC
                 }];
}

最佳答案

animations:^{
    newViewController.view.transform = CGAffineTransformMakeScale(1.0, 100.0);
    newViewController.view.center = originalCenter;
}

看起来您没有为当前 View Controller 的 View 设置动画。我也不确定您为什么要设置新 View Controller View 的转换。我希望您的代码看起来像这样:

CGPoint originalCenter = currentViewController.view.center;
CGPoint newCurrentVCCenter = CGPointMake(currentViewController.view.center.x - screenWidth, currentViewController.center.y);
[UIView animateWithDuration:1.9
                  delay:0.0
                options:UIViewAnimationOptionCurveEaseInOut
animations:^{
    currentViewController.center = newCurrentVCCenter;
    newViewController.view.center = originalCenter;
}
completion:^(BOOL finished){
     // clean up here
}];

换句话说,您正在移动 currentViewController.viewnewViewController.view,以便当前 View 和新 View 都向左移动相同的量,并且在同一时间。

关于ios - 自定义 Storyboard转场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920167/

相关文章:

objective-c - super 简单的程序不起作用

ios - 当在两个 UIViewControllers 之间调用 segue 时,屏幕需要从右向左滑动

ios - 我想通过单击解析 Json 的 Collection View 单元格来获取特定数据

ios - 类型 'UIViewController' 的值没有名为 JSON 的成员 'jsonfile'

objective-c - ios deleteconformation 按钮

ios - 如何将按钮标题传递给 Swift 中的下一个 View Controller

ios - Swift - 摇动 Action 为后续做准备

iphone - 无法将字符串保存到 SQLite 数据库中(SQLITE_DONE 不返回 true)

ios - 无法让我的位置显示在 iOS 8 的 Google map 中

iphone - 将图像文件上传到 Web 表单