0

В моем приложении я должен настроить панель навигации в зависимости от страницы, на которой я включен. В некоторых представлениях мне нужно добавить UIButton, но также некоторые UIImage (для логотипа, который не центрирован) или некоторые UILabel.Добавить UIImage или UILabel в navigationItems

Я мог бы это сделать, используя [self.navigationController.navigationBar addSubview:myLabel]. Но мне не нравится этот метод, потому что, если мне когда-либо придется добавить UIButton или просто изменить текст UILabel, мне нужно вручную изменить начало каждого из UILabel и каждого UIImage.

Я думал об использовании чего-то уже существующего: UIBarButtonItem. Он может содержать некоторый текст, изображение, и мне просто нужно добавить каждый из них в navigationItem.leftBarButtonItems, и каждая вещь красиво позиционируется.

Единственная проблема, которая остается, состоит в том, что она все еще является кнопкой и реагирует как одна при нажатии. Если я отключу его, это альфа-изменения, чтобы показать, что он отключен ... Как я могу сохранить нормальное явление и позволить ему отключиться?

Спасибо!

PS: Я открыт для любой другой идеи, чтобы добавить UIImages или UILabels в навигационной панели :)

ответ

1

Вы можете сделать это, не устанавливая каких-либо @selector для созданной кнопки и настройки те же индивидуальные свойства обоих UIControlStateNormal и UIControlStateSelected. Также установите tintColor в ClearColor. Таким образом, кнопка все равно будет кнопкой, она останется там, всегда будет выглядеть одинаково, но ничего не сделает.

Надеюсь, это поможет.

+0

Этот ответ в сочетании с @ santhu's дал мне решение. Благодаря :) –

2

Попробуйте этот фрагмент кода. Вы можете изменить рамку Label и imageView и поместить в качестве своего требования.

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

UILabel *label; 
label = [[UILabel alloc] initWithFrame:CGRectMake(5, 25, 200, 16)]; 
label.tag = 1; 
label.backgroundColor = [UIColor clearColor]; 
label.font = [UIFont boldSystemFontOfSize:16]; 
label.adjustsFontSizeToFitWidth = NO; 
label.textAlignment = UITextAlignmentLeft; 
label.textColor = [UIColor whiteColor]; 
label.text = @"My first lable"; 
label.highlightedTextColor = [UIColor whiteColor]; 
[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 = UITextAlignmentRight; 
label.textColor = [UIColor whiteColor]; 
label.text = @"second line"; 
label.highlightedTextColor = [UIColor whiteColor]; 
[btn addSubview:label]; 
[label release]; 


UIImageView *imgviw=[[UIImageView alloc]initWithFrame:CGRectMake(170, 10, 20, 20)]; 
imgviw.backgroundColor = [UIColor blackColor]; 
imgviw.image=[UIImage imageNamed:@"abc.png"]; 
[btn addSubview:imgviw]; 

self.navigationItem.titleView = btn; 

Надеюсь, что это поможет.

1

вы можете использовать barButton, созданный с помощью customView.

, например,

UIButton *btn =[UIButton buttonWithType:UIButtonTypeCustom]; 
[btn setFrame:CGRectMake(0, 0, 100, 40)]; 
[btn setTitle:@"some Title" forState:UIControlStateNormal]; 
[btn setBackgroundColor:[UIColor greenColor]]; 

self.navigationItem.leftBarButtonItem =[[UIBarButtonItem alloc] initWithCustomView:btn]; 
Смежные вопросы