具有透明背景的ViewController通过推送转换input当前ViewController

我有这个故事板:

在这里输入图像说明

我的第一个ViewController以PNG图像为背景进行编程:

- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bgleft"]]; } 

我的第二个ViewController具有透明背景,通过select故事板上的清除颜色作为背景属性。

但是当它在我的iPod上运行时,似乎我的第二个ViewController具有相同的背景,但是从右向左推送第一个ViewController背景。

我想要做的是:

  1. 当Segue检测到时,它会将第一个ViewController上的所有UI组件从当前位置移动到左侧,所以感觉就像它被第二个ViewController(但不是背景,我想把背景保持在它的位置)所推动的一样。

  2. 那么第二个ViewController上的所有UI组件都会使用我已经在Storyboard上设置的Push Transition作为透明的ViewController。

所以,它将从一个ViewController平滑过渡到另一个不移动背景。

我试着用这个代码:

 - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"goToViewTwo"]) { UIViewController *view2 = segue.destinationViewController; view2.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bgleft"]]; } } 

但我不知道如何移动/animation所有UI组件(button,标签等)来执行我所描述的。 请告诉我该怎么做..谢谢。

我认为你可以做到这一点,使两个控制器有一个透明的背景,并添加到窗口的背景图像。

在第二个viewController粘贴这个来源

 self.view.backgroundColor = [UIColor clearColor]; self.modalPresentationStyle = UIModalPresentationCurrentContext; self.modalPresentationStyle = UIModalPresentationFormSheet;