2012-04-04 38 views
3

我試圖在UINavigationBar中創建一個標題,就像音樂應用程序中的標題一樣。也就是說,它有三條線,如果線太長,一條線會滾動。以下代碼有幾個問題。 1)如果一條線太長,它將打破下一條線。所以如果第2行太長,它會溢出到第3行,第3行根本沒有顯示。此外,沒有辦法改變行高,這不適合UINavigationBar。UINavigationBar像音樂應用程序的標題

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 480, 44)]; 
label.backgroundColor = [UIColor clearColor]; 
label.numberOfLines = 3; 
label.font = [UIFont boldSystemFontOfSize: 12.0f]; 
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]; 
label.textAlignment = UITextAlignmentLeft; 
label.textColor = [UIColor whiteColor]; 
NSString *songData; 
songData = [[songList objectAtIndex:currentIndex] artistName]; 
songData = [songData stringByAppendingString:@"\n"]; 
songData = [songData stringByAppendingString: [[songList objectAtIndex:currentIndex] songName]]; 
songData = [songData stringByAppendingString:@"\n"]; 
songData = [songData stringByAppendingString: [[songList objectAtIndex:currentIndex] albumName]]; 
label.text = songData; 
self.navigationItem.titleView = label; 

回答

0

我試圖做同樣的事情,雖然Mangesh的回答地址一半(滾動)的問題,我會盡力幫助另一半。爲了適應多個標籤,您可以創建一個新視圖並使用多個標籤填充該視圖,以防止相互之間運行的線條出現問題。有很多帖子和教程,如果你只是在titleView中添加一些東西,那麼導航欄的自定義要比它需要的複雜得多。這是我做的:

  1. 用xib創建新的視圖控制器。
  2. 刪除IB中給出的默認視圖並將其替換爲另一個視圖。用尺寸檢查器設置其大小。 128 x 33是一個titleView的工作。您將更可能想要設置視圖的背景來清除顏色。
  3. 將一些標籤拖入其中(3如果您希望它看起來像iOS音樂應用程序)並相應地調整大小/顏色。
  4. 將您的新視圖設置爲文件所有者的視圖。
  5. 創建您的新標籤所需的任何IBOutlets,並將它們附加到IB的文件所有者。
  6. 在您需要的導航控制器一起工作,初始化您的自定義視圖控制器,並將其作爲navigationItem的titleview的視圖的視圖控制器的viewDidLoad中:

    TitleViewController * customTitleVC = [[TitleViewController頁頭] initWithNibName:無捆綁:無]; self.navigationItem.titleView = customTitleVC.view;

如果您使用Mangesh的鏈接,則需要合併滾動視圖並將其包含在您的自定義視圖控制器中,並將其鏈接到的庫中。我所給出的方法已被證實可以在iOS 4.3 - 5.1上運行。希望能幫助別人。

4

你試過MarqueeLabel?這是非常好的:)

MarqueeLabel是一個UILabel子類添加滾動字幕效果,當標籤的文本超過可用寬度。標籤的滾動方向和速度/速率也可以被指定。所有標準的UILabel屬性(它的意義)都可以在MarqueeLabel中使用,它的行爲就像UILabel一樣。