2010-12-01 71 views
1

我想在導航欄的標題旁邊放一個圖標。我不希望將其實現爲自定義titleView,因爲那樣我需要爲每個放在堆棧上的控制器創建一個自定義titleView(並且我有很深的嵌套)。我現在將其作爲UIImageView添加到導航欄中。我的問題是準確計算此圖標的水平位置。這取決於後退按鈕的寬度,每次都有另一個標題。我如何計算這個後退按鈕框?谷歌搜索似乎並沒有帶來任何合理的結果。提前在導航欄的後退按鈕和標題之間添加圖標

感謝

回答

0

你可以計算出它和實驗一下按鈕,將加上標籤的大小, 文本..

CGSize s = [label sizeWithFont:_font]; 
+0

你的意思是採取後退按鈕標籤的寬度。我認爲可能會有更標準的方法... – 2010-12-08 15:13:11

0

我遇到了同樣的問題。我的解決方案是在靈活的空間之後添加圖標作爲leftBarButtonItems之一。這反對了標題。

UIBarButtonItem *space = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease]; 
UIView *icon = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titleIcon"]] autorelease]; 
UIBarButtonItem *iconItem = [[[UIBarButtonItem alloc] initWithCustomView:icon] autorelease]; 
NSArray *items = [NSArray arrayWithObjects: space, iconItem, nil]; 
self.navigationItem.leftBarButtonItems = items; 
self.navigationItem.leftItemsSupplementBackButton = YES; 

這不是完全一樣創建一個自定義titleview的,但是,有兩種方式:(1)標題文本保持居中如果可能的話,與圖標的左邊,而不是居中的標題和圖標一起; (2)當您將新視圖推入堆棧時,該圖標不會向標題左側滑動;相反,它會淡出,就像其他酒吧按鈕項目一樣。

因此,根據您的要求,此解決方案可能會或可能不適合您。但至少它可以避免嘗試在自定義標題視圖中匹配標準標題文本屬性。 (據我所知,沒有自動的方法來做到這一點。)

相關問題