2012-11-11 16 views
0

我在我的導航欄中有一個子視圖。我試圖通過這種方式來添加:如何在導航欄中動畫子視圖?

UIView *customView = 
    [[UIView alloc] initWithFrame: 
        CGRectMake(0, 0, image.size.width + label.frame.size.width, 44)]; 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
    [customView addSubview:imageView]; 
    [customView addSubview:label]; 
    [self.navigationController.navigationBar addSubview:customView]; 

然而,當我試圖推動導航欄,customView停留在地方,而不是跟隨動畫的滑動導航條。我怎樣才能實現動畫子視圖?它甚至有可能嗎?謝謝!

回答

0

你不應該以這種方式添加子視圖
你有tospecify在您的視圖位置左,右或標題視圖

self.navigationItem.titleView = YOURVIEW;

或選擇這樣的標題視圖將會添加到當前視圖左邊另一個位置或正確的項目,如果你想刪除它只是將其設置爲nil在你想要的地方,重裝一遍子視圖,

self.navigationItem.titleView = nil;

+0

這是正確的,這是在導航欄上添加子視圖的正確方法 – spider1983

0

當您使用

[self.navigationController.navigationBar addSubview:customView]; 

這意味着你必須創建在應用程序委託,是在你的項目中所有viewControllers常見的導航欄,這就是爲什麼一旦你添加一個視圖到它,你在你擁有的每一個視角看到它。在

-(void)viewWillDisappear:(BOOL)animated{ 
[Your subview remove fromSuperView]; 
[super viewWillDisappear:YES]; 
} 

刪除您的子視圖,並添加子視圖中

-(void)viewWillAppear:(BOOL)animated{ 
[self.navigationController.navigationBar addSubview:Your subview]; 

[super viewWillAppear:YES]; 

} 

這將增加子視圖中只有特定視圖,併爲這一觀點被彈出或pushed.The代碼儘快刪除給定不正確的語法,請給予檢查。

+0

感謝您的回答!但我會接受奧馬爾的答案,因爲這是一個更好的方式來添加自定義子視圖到導航欄:) – Rendy