#iphone #objective-c #uinavigationbar
#iPhone #objective-c #панель uinavigationbar
Вопрос:
Я пытаюсь использовать UILabel для замены заголовка в UINavigationBar, код выглядит следующим образом:
UINavigationBar *bar = [self.navigationController navigationBar];
[bar setBackgroundColor:[UIColor blackColor]];
UILabel * nav_title = [[UILabel alloc] initWithFrame:CGRectMake(80, 2, 220, 25)];
nav_title.font = [UIFont fontWithName:@"Arial-BoldMT" size:18];
nav_title.textColor = [UIColor whiteColor];
nav_title.adjustsFontSizeToFitWidth = YES;
nav_title.text = title;
nav_title.backgroundColor = [UIColor clearColor];
[bar addSubview:nav_title];
[nav_title release];
Проблема в том, как мне удалить исходное название панели? Я не объявлял никакого self.title = @»title», но он всегда показывает это там:
Если я сделаю self.title = nil, то все пропадет… Как удалить этот загадочный заголовок из навигационной панели и просто использовать UILabel, который я создал.
Ответ №1:
Почему бы вам просто не сделать self.title = @»»?
РЕДАКТИРОВАТЬ: попробовать это?
UINavigationBar *bar = [self.navigationController navigationBar];
[bar setBackgroundColor:[UIColor blackColor]];
UILabel * nav_title = [[UILabel alloc] initWithFrame:CGRectMake(80, 2, 220, 25)];
nav_title.font = [UIFont fontWithName:@"Arial-BoldMT" size:18];
nav_title.textColor = [UIColor whiteColor];
nav_title.adjustsFontSizeToFitWidth = YES;
nav_title.text = title;
self.title = @"";
nav_title.backgroundColor = [UIColor clearColor];
[bar addSubview:nav_title];
[nav_title release];
Комментарии:
1. это потому, что вы устанавливаете nav_title.text = title, а затем устанавливаете title = @»»
2. итак, что я сделал, это добавил UILabel в качестве вложенного представления, затем выполнил self.title = @»», а затем внутри viewWillDisapper я удалил метку из супервизора.. Есть ли какой-нибудь лучший способ, чем этот?
3. @shabzco, является ли 220×25 размером метки по умолчанию для панели навигации?
Ответ №2:
Используйте self.navigationItem.titleView = nav_title;
вместо добавления вашей метки в качестве вложенного представления.
Комментарии:
1. проблема в том, что вы не можете настроить fontsizetofitwidth с помощью этого. Изначально я использовал это, но меня беспокоило …. когда текст длинный
2. Возможно, оберните метку в обычный UIView, позвольте внешнему виду выполнить авторазмер, а внутренней метке изменить размер шрифта.
Ответ №3:
Используйте это:
UILabel *label = [[UILabel alloc]init];
[label setBackgroundColor:[UIColor clearColor]];
[label setTextColor:[UIColor whiteColor]];
[label setText:self.title];
label.adjustsFontSizeToFitWidth=YES;
label.lineBreakMode=UILineBreakModeWordWrap;
label.numberOfLines=0;
[label setFont:[UIFont boldSystemFontOfSize:16.0]];
[self.navigationController.navigationBar.topItem setTitleView:label];
[label release];
Hope this will help u..!