2011-10-19 88 views
7

使用iOS 5 SDK我正在編寫一個在其UINavigationBar實例中使用自定義腳本樣式字體的應用程序。這個字體的問題在於,由於它是腳本樣式,所以它的字形超出了界限。您可以查看應用問題就在這裏:iOS 5 UINavigationBar中的截斷標題標籤

Example image on a device

更清晰的例子,你可以在這裏看到我的Photoshop文檔:

Photoshop example

任何想法如何我可能會解決這個問題?我的第一本能是在UINavigationBar中設置UILabel的clipsToBounds屬性,但顯然沒有蘋果認可的直接訪問此對象的方法。這在我使用iOS 5測試版的時候困擾了我一段時間,所以現在你可以幫助解除NDA。

謝謝!

+0

你知道了嗎?我有完全一樣的問題。 – danbretl

+0

嗯,我向蘋果公司提交了一張票,過了一段時間,他們回來時因爲某些技術原因,「UILabel無法真正做你想問什麼」。我還沒有真正找到工作,並決定改變這個項目的設計,因爲其他原因使這個問題無關緊要。抱歉! – maxluzuriaga

+0

沒問題。感謝更新。如果我找到可靠的解決方法,我會發佈一個答案。大多數情況下,我並沒有對自己造成太大的傷害,所以目前我沒有投入太多時間。 – danbretl

回答

0

如果您使用的是導航控制器,您可以設置正在顯示的某個UIViewController的titleView。該標題視圖可以是標題爲.png資源的UIImageView 。

例如:

內UIViewController中

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
      self.navigationController.navigationItem.titleView = [[UIImageView alloc] initWithImage:@"yourheader.png"]; 
    } 

    return self; 
} 

你可以用一下你的圖像的大小,使其適合正常。

希望這可以幫助。

+2

我意識到這一點,但在我的應用程序標題需要改變每個新的視圖控制器,包括基於用戶輸入動態變化,所以這樣的靜態解決方案將無法正常工作。 – maxluzuriaga

0

你可以訪問UILabel的clipToBounds或adjustsFontSizeToFitWidth屬性嗎?

或者,你可以選擇一個字體大小,使標籤在UILabel視圖中查找。詳細說明請見關於如何將字體大小調整到一個給定的矩形這裏:

How to adjust font size of label to fit the rectangle?

1

你可以使用UINavigationItemtitleView設置UILabel使用自定義字體,然後覆蓋setTitle:來更新您的自定義標籤。如有必要,您可以在標籤上撥打sizeToFit或在使用sizeWithFont:或任何其他NSString尺寸調整方法後手動更新其框架。

1

我有完全相同的問題,似乎無法找到有關該主題的任何最新解決方案。

這裏有一個文章,我的問題的一個很好的解釋,雖然發現:https://web.archive.org/web/20161228102731/http://tinymission.com/post/subclassing-uibutton

這篇文章的作者說:

你看,蘋果公司(或誰設計的UIButton類)決定根據報告的字體寬度自動計算按鈕標籤的寬度。 ......這個問題主要以斜體和草書字體出現。 ......他們嵌套的方式是,字體設計師實際上是在計算範圍之外有意識地繪製字母。這允許兩個草書字母接觸,並且其他字母樣式更接近在一起,使得像'f'這樣的字母看起來與字母't'沒有異常的距離。

希望這有助於任何未來的人誰遇到同樣的問題絆倒這篇文章!