快速和骯髒的:你應該能夠通過一個自定義標籤添加到導航欄
[navigationBar addSubview:yourLabel];
就設置標籤的框架導航條內的中心位置,像之前修改其alpha值。但是,這是一個真正的黑客攻擊,我不確定它在推送和彈出視圖控制器時的行爲。
編輯:
好的,在這裏你去。首先假定我們有一個導航欄,其中包含標題屬性(不是titleView屬性)以及左右欄按鈕項目集。
UINavigationBar* bar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[self.view addSubview:bar];
UINavigationItem* anItem = [[UINavigationItem alloc] initWithTitle:@"HeyHey"];
UIBarButtonItem* leftItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:nil action:nil];
UIBarButtonItem* rightItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:nil action:nil];
anItem.leftBarButtonItem = leftItem;
anItem.rightBarButtonItem = rightItem;
bar.items = [NSArray arrayWithObject:anItem];
[leftItem release];
[rightItem release];
[anItem release];
現在你可以淡出標題視圖像這樣:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[[[bar subviews] objectAtIndex:0] setAlpha:0];
[UIView commitAnimations];
我不知道,如果標題視圖總是在指數0,但你可以檢查使用
你的具體情況
for (UIView* aView in bar.subviews) {
NSLog(@"%@", aView);
}
爲標題查看您會看到類似
<UINavigationItemView: 0x7566530; frame = (0 0; 0 0); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x75665e0>>
你會如何「設置標籤的框架爲中心」?如果你的意思是我將shuld設置爲標籤的框架,使其中心點位於導航欄的中間,導致我遇到的另一個問題:由於左右欄按鈕的寬度不同,因此我的標題不能使用整理導航欄中的所有空間並居中。不知道這是否足夠清楚,但我認爲這是一個單獨的問題,我應該問。 – ImaginaryCake 2011-03-07 19:36:51
是的,這就是我的意思。我並沒有真正理解你的中心問題。總結一下我的理解:當你使用title屬性時,標題位於欄的中心,但不能淡入。另一方面,當您使用titleView屬性時,您可以淡入標題,但無法正確居中。那是對的嗎?我想到的另一個選項是使用title屬性來設置標題,然後嘗試在導航欄的子視圖數組中盲目地查找以獲取對相應標籤視圖的引用。但我不確定這是否會奏效。 – hennes 2011-03-07 20:37:00
我剛剛檢查,它的工作原理!我上面更新了我的答案。 – hennes 2011-03-08 07:45:24