3

我正在尝试在 UINavigationBar 中创建一个标题,该标题类似于音乐应用程序中的标题。也就是说,它有三行,如果一行太长,就会滚动。下面的代码有几个问题。1)如果一行太长,它将中断到下一行。因此,如果第 2 行太长,它会溢出到第 3 行,并且根本不会显示第三行。此外,无法更改行高,这不适合 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;
4

3 回答 3

4

你试过MarqueeLabel吗?这是很不错的 :)

MarqueeLabel 是一个 UILabel 子类,当标签的文本超出可用宽度时添加滚动选取框效果。标签滚动方向和速度/速率也可以指定。所有标准的 UILabel 属性(有意义的地方)都可以在 MarqueeLabel 中使用,它的行为就像 UILabel。

于 2012-09-03T07:07:22.843 回答
0

我正在尝试做类似的事情,虽然 Mangesh 的回答解决了一半的问题(滚动),但我会尽力帮助解决另一半问题。为了适应多个标签,您可以创建一个新视图并用多个标签填充它,以防止出现线条相互重叠的问题。如果您只是在 titleView 中添加一些内容,那么有很多帖子和教程使导航栏的自定义变得比需要的复杂得多。这就是我所做的:

  1. 使用 xib 创建新的视图控制器。
  2. 删除 IB 中给出的默认视图并用另一个视图替换它。使用尺寸检查器设置其尺寸。128 x 33 是​​ titleView 可以工作的。您很可能希望将视图的背景设置为清除颜色。
  3. 将一些标签拖入其中(如果您希望它看起来像 iOS 音乐应用程序,则为 3 个)并相应地调整它们的大小/颜色。
  4. 将您的新视图设置为文件所有者的视图。
  5. 创建新标签所需的任何 IBOutlets,并将它们附加到 IB 中的文件所有者。
  6. 在您希望导航控制器使用的视图控制器的 viewDidLoad 中,初始化您的自定义视图控制器并将其视图设置为 navigationItem 的 titleView:

    TitleViewController *customTitleVC = [[TitleViewController alloc] initWithNibName:nil bundle:nil]; self.navigationItem.titleView = customTitleVC.view;

如果您使用 Mangesh 的链接,您将需要合并滚动视图并将其与他链接的库一起包含在您的自定义视图控制器中。我给出的方法已确认适用于 iOS 4.3 - 5.1。希望对某人有所帮助。

于 2012-05-23T18:34:00.967 回答
0

您可以借助时间创建自己的股票代码视图。请参考下面的源代码。它将文本从一个方向移动到另一个方向。

https://github.com/MugunthKumar/MKTickerViewDemo

https://github.com/caydenliew/CLTickerView

于 2012-04-04T17:50:50.393 回答