ViewController与透明背景进入当前ViewController与推进过渡

时间:2013-09-11 04:30:22

标签: iphone ios objective-c uiviewcontroller

我有这个故事板:

enter image description here

我的第一个ViewController以编程方式将PNG图像作为背景:

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

我的第二个ViewController通过在Storyboard上选择Clear Color as Background属性来具有透明背景。

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

我想做的是:

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

  2. 然后,第二个ViewController上的所有UI组件都使用Push Transition进入,我已经在Storyboard上设置了透明的ViewController。

  3. 因此,它将在不移动背景的情况下从一个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"]];
        }
    }
    

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

2 个答案:

答案 0 :(得分:2)

我认为你可以通过让两个控制器都具有透明背景,然后将背景图像添加到窗口来实现这一点。

答案 1 :(得分:0)

在第二个viewController中粘贴此源

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