2012-03-20 85 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

相關問題