我想定製我的UINavigationBar的字體,使用iOS 5的下面的代碼在我的應用程序委託的application:didFinishLaunchingWithOptions
:自定義字體UINavigationBar的
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)])
{
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
[UIColor blackColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(1, 0)], UITextAttributeTextShadowOffset,
[UIFont fontWithName:kDefaultFont size:0.0], UITextAttributeFont,
nil]];
}
它工作正常,並使用我的字體呈現的導航欄。大。
的references我發現建議你可以使用零的字體大小,它會調整字體以滿足您的導航欄(使用了橫向佈局的短導航欄略小的字體)。而且它的確選擇了一種很適合導航欄高度的字體大小。但是,如果您從縱向到橫向並返回,導航欄的標題標籤的寬度會變得很大,所以顯示爲例如「Long Titlebar」的標題時,首次查看它時看起來不錯在縱向方向上,當您在橫向(使用適當更小的字體)中查看時看起來很好,但是當我回到縱向時,字體正確地恢復爲較大的字體,但標題文本本身被截斷,變爲「Long ..」。 。「即使有很多空間可以放滿整個標題。有沒有其他人看到這種行爲時使用0.0的字體大小?很明顯,我可以指定一個實際的字體大小(在這種情況下,我沒有看到這種截斷行爲),但是我手動計算出要使用的大小。更糟糕的是,橫向和縱向的字體大小是相同的,因此我現在使用的字體大小適合較短的橫向導航欄標題,而標題小於需要放置在較高縱向導航欄中的字體大小。
有沒有人有過使用setTitleTextAttributes
來改變字體大小在縱向和橫向之間改變字體的方式,但是在你返回到肖像後不能截斷標題時使用setTitleTextAttributes
來改變字體景觀?我即將開展各種各樣的解決方案,但如果您有任何關於此問題的經驗,請告訴我。
更新:
在提交這個bug蘋果的過程中,我決定將演示如何重現該問題:
在Xcode 4.3中創建新的iOS主從應用。 2。
將上面的
setTitleTextAttributes
代碼放在應用程序代理的application:didFinishLaunchingWithOptions
(我使用font @「GillSans」)。轉到MasterViewController並添加一行說
self.title = @"Long Title";
註釋掉
UIBarButtonItem *addButton
代碼。運行該程序。注意正確的標題說「長標題」。旋轉到風景。仍然看起來不錯。旋轉回肖像,標題現在顯示「Long ...」,即使有足夠的空間。
奇怪的是,如果您恢復
UIBarButtonItem *addButton
代碼,則標題按原樣工作。但是,如果您要麼消除UIBarButton項目,要麼將其替換爲使用initWithTitle
而不是initWithBarButtonSystemItem
的按鈕,則在從縱向旋轉到橫向然後再回到縱向後,導航欄標題會出現問題。
我有一個問題,那就是我的自定義字體導航欄標題在第一次顯示時被「過早截斷」,但之後很好。似乎是一個iOS 6主義。無論如何,發現我可以設置字體大小爲0.0解決了問題。謝謝! – mharper 2012-10-05 01:06:43
有趣的是,在使用此方法的iOS5.1模擬器中,標題在* pushModalViewController轉換期間被截斷*,但轉換完成後顯示正常。在iOS 6.0模擬器上,它按預期工作。 – 2012-10-17 09:32:50