Несколько меток в панели навигации

голоса
3

Я хотел бы создать представление, похожее на «Now Playing» страницу на iPhone и иметь 3 строку текста в строке навигации.

Единственный способ, которым я мог бы найти, чтобы сделать это:

UINavigationBar *bar = [self.navigationController navigationBar];   
label = [[UILabel alloc] initWithFrame:CGRectMake(60, 2, 200, 14)];
label.tag = SONG_TAG;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:14];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.highlightedTextColor = [UIColor blackColor];
[bar addSubview:label];
[label release];

//Create album label
label = [[UILabel alloc] initWithFrame:CGRectMake(60, 17, 200, 12)];
label.tag = ALBUM_TAG;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont systemFontOfSize:12];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.highlightedTextColor = [UIColor blackColor];
label.textColor = HEXCOLOR(0xA5A5A5ff);
[bar addSubview:label];
[label release];

//Create artist label
label = [[UILabel alloc] initWithFrame:CGRectMake(60, 30, 200, 12)];
label.tag = ARTIST_TAG;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont systemFontOfSize:12];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.highlightedTextColor = [UIColor blackColor];
label.textColor = HEXCOLOR(0xA5A5A5ff);
[bar addSubview:label];
[label release];

Проблема с этим я должен удалить их, когда представление меняется. Так, в -viewWillDisappear у меня есть:

UILabel *label;
label = (UILabel *)[self.navigationController.navigationBar viewWithTag:SONG_TAG];
[label removeFromSuperview];
label = (UILabel *)[self.navigationController.navigationBar viewWithTag:ALBUM_TAG];
[label removeFromSuperview];
label = (UILabel *)[self.navigationController.navigationBar viewWithTag:ARTIST_TAG];
[label removeFromSuperview];

Я думаю, что способ сделать это сделать пользовательский вид, который имеет 3 метки в нем, и добавить к просмотру заголовка. (Здесь подвох - вы можете только добавить 1 метку или вида на виде названия пятно на навигационной панели)

self.navigationItem.titleView = newViewIMadeWithThreeLabels
Задан 09/12/2008 в 22:57
источник пользователем
На других языках...                            


7 ответов

голоса
4

UIView ниже код работает нормально для меня, ты была такая же маркирующие используется дважды, может быть ваша авария причина.

UIView *btn = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 60)];

UILabel *label;
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 200, 16)];
label.tag = 1;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.text = @"first line";
label.highlightedTextColor = [UIColor blackColor];
[btn addSubview:label];
[label release];

label = [[UILabel alloc] initWithFrame:CGRectMake(0, 30, 200, 16)];
label.tag = 2;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.text = @"second line";
label.highlightedTextColor = [UIColor blackColor];
[btn addSubview:label];
[label release];

self.navigationItem.titleView = btn;
Ответил 20/12/2009 в 22:37
источник пользователем

голоса
2

Вы могли бы попробовать создать UIViewController с этикетками правильно расположен, а затем создать его экземпляр, как UIViewControllerSubclass * юг = [[UIViewControllerSubclass Alloc] инициализации];

В подклассе UIViewController, вы должны создать свой вид в методе loadView делегата и придают вид каждой этикетки для зрения контроллера представления, как [[само мнение] addSubview: метка];

Затем присоедините свою точку зрения следующим образом:

self.navigationItem.titleView = sub.view;

Это может сработать.

Ответил 09/12/2008 в 23:10
источник пользователем

голоса
1

Сегодня я шел через ту же проблему, и я сделал это таким образом.

  1. Я создал UIView размера 320 * 44 на месте 0,0 - вы можете иметь различный размер представления, основанный на вашем требовании.

  2. Создание IBOutlet для этого пользовательского представления имени navigationBarTitleView - сделать необходимые соединения с вашей точки зрения

  3. Добавить подвид в navgiationBar со следующим кодом внутри внутри viewWillAppear: ИЛИ viewDidAppear:

    [[[Само navigationController] Панель навигации] addSubview: navigationBarTitleView];

  4. Когда вы нажимаете эту точку зрения на navigationcontroller, удалите navigationBarTitleView из надтаблицы.

    [NavigationBarTitleView removeFromSuperview];

Ответил 23/10/2010 в 22:29
источник пользователем

голоса
1
UINavigationBar *bar = [self.navigationController navigationBar];
CGFloat navBarHeight = 70.0f;    
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, navBarHeight);
[bar setFrame:frame];
UILabel *label;
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 320, 10)];
label.tag = 1;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:12];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.text = @"Set the details for this event.";
label.highlightedTextColor = [UIColor blackColor];
[bar addSubview:label];
[label release];
[bar release];
Ответил 14/05/2010 в 13:13
источник пользователем

голоса
1

Ваше предложение позже в посте является правильным. Создание UIView, который содержит ваши 3 этикетки и установить его в качестве titleView. Пожалуйста, не пытайтесь добавить подвидов непосредственно к UINavigationBar.

Ответил 10/12/2008 в 15:34
источник пользователем

голоса
0

Аккуратнее способ это просто enumтег:

enum {
  SONG_TAG,
  ALBUM_TAG,
  ARTIST_TAG
};

Ваш код должен работать тогда.

Ответил 25/09/2010 в 19:07
источник пользователем

голоса
0

Я пытался добавить весь вид .. однако, приложение терпело крах, когда я добавил подвид (как ярлык) к нему в loadView делегата. Я не все, что большой в отладке полных аварий, так что я нашел с помощью кнопки было гораздо проще. Я не нашел ни аффекты стороны еще ...

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 320, 60);

UILabel *label;
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 200, 16)];
label.tag = SONG_TAG;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.text = @"first line";
label.highlightedTextColor = [UIColor blackColor];
[btn addSubview:label];
[label release];

label = [[UILabel alloc] initWithFrame:CGRectMake(0, 30, 200, 16)];
label.tag = SONG_TAG;
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16];
label.adjustsFontSizeToFitWidth = NO;
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.text = @"second line";
label.highlightedTextColor = [UIColor blackColor];
[btn addSubview:label];
[label release];

self.navigationItem.titleView = btn;
Ответил 15/12/2008 в 23:46
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more