2012-03-20 87 views
38

我想在iOS的标签栏模拟下添加视图,然后使用它后面的动画显示它。但是,当我使用我的代码时,必须来自我的标签栏背后的视图与我的标签栏重叠了一段时间。如何在iOS中的其他视图背后添加视图

tab bar and a view that shows when tab bar button pressed

这是我的代码:

- (void)handlePressedButton { 
if (pressedButton.selected) { 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    CGAffineTransform transform1 = CGAffineTransformMakeTranslation(-196.0, 0.0); 
    CGAffineTransform transform2 = CGAffineTransformMakeTranslation(0.0, 0.0); 
    [leftPanelView setTransform:transform1]; 
    [movedView setTransform:transform2]; 
    [UIView commitAnimations]; 
    pressedButton.selected = NO; 
} 
else { 
    pressedButton.selected = YES; 
    if (leftPanelView) { 
     [leftPanelView removeFromSuperview]; 
     leftPanelView = nil; 
    } 
    CGRect viewFrame = CGRectMake(-196, 0, 236, 748); 
    leftPanelView = [[UIView alloc] initWithFrame:viewFrame]; 
    leftPanelView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"left-nav-content.png"]]; 

    // Code to populate leftPanelView according to what button is pressed. 
    [self populateLeftPanelView]; 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    [self.view addSubview:leftPanelView]; 
    CGAffineTransform transform1 = CGAffineTransformMakeTranslation(236.0, 0.0); 
    CGAffineTransform transform2 = CGAffineTransformMakeTranslation(112.0, 0.0); 
    [leftPanelView setTransform:transform1]; 
    [movedView setTransform:transform2]; 
    [UIView commitAnimations]; 
} 

}

这里leftPanelView是必须拿出一个标签栏下的视图。移动视图是另一种视图,即在左侧面板的右侧(不介意)

+0

检查是否有效:[self.navigationController.view insertSubview: belowSubview:self.navigationController.navigationBar]; – 2016-05-06 06:20:35

回答

42

尝试sendSubviewToBack

[self.view sendSubviewToBack:leftPanelView]; 
+0

我接受你的答案,因为你已经发送了2分钟后,我张贴。我认为这很公平。 – wzbozon 2012-04-09 17:06:28

+6

这不回答问题。所有这些都是将视图移到子视图链的后面。何世明的答案是正确的。 – Rickster 2015-04-07 18:03:08

+0

感谢您的回答。它为我工作。 – Ramakrishna 2017-02-06 07:15:32

4

哦,我自己找到了解决方案。我在此之后说:

[UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    [self.view addSubview:leftPanelView]; 

这一行:

[self.view sendSubviewToBack:leftPanelView]; 
106

此外addSubview,还有其他的方法,你可以依靠添加您的看法:

– insertSubview:aboveSubview: 
– insertSubview:belowSubview: 
– insertSubview:atIndex: 

您可以使用这些方法控制视图的索引(实际上是z索引或图层顺序)。

+1

对我来说'insertSubview:belowSubview:'解决了问题! Thx – 2014-10-22 12:31:17

+0

这应该是正确的答案。上面的答案不回答问题。 – MarkosDarkin 2017-10-25 12:41:09

相关问题