Заголовок UINavigationbar обрезается при использовании titleTextAttributes - PullRequest
15 голосов
/ 25 декабря 2011

В моем приложении для iPhone есть контроллер панели вкладок, и на каждой вкладке (4 вкладки) есть UINavigationController, для которого я хочу выбрать другой цвет и изменить шрифт заголовка, поэтому я создал свой собственный пользовательский контроллер навигации, чтобы его можно было использовать вездетак что эти изменения только в 1 месте.Оттенок прост и работает нормально, но когда я пытаюсь установить шрифт с помощью setTitleTextAttributes, он меняет шрифт, но в некоторых представлениях заголовок оказывается обрезанным в конце (т. Е. «Мой заголовок ...»).Если я меняю представления и затем возвращаюсь к виду с обрезанным заголовком, заголовок отображается правильно.

В настоящее время мой viewDidLoad в моем пользовательском контроллере UINavigationController имеет:

UIFont *font = [UIFont fontWithName:@"GillSans-Bold" size:22];
NSDictionary *attr = [[NSDictionary alloc] initWithObjectsAndKeys:font, UITextAttributeFont, nil];
[self.navigationBar setTitleTextAttributes:attr];

Я думал, что он меняет шрифт titleView, но его размер не изменяется в соответствии с новым размером (поскольку онбольший шрифт).Другая проблема заключается в том, что когда телефон переходит в альбомную ориентацию, любые буквы, которые висят низко (g, p, y), обрезают днища.Есть ли способ изменить размер метки или разрешить установку минимального размера шрифта, чтобы текст просто уменьшался, когда он слишком большой?

Ответы [ 3 ]

3 голосов
/ 04 мая 2012

Это сработало для меня

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self setTitle:self.station.title];
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 400, 44)];
    label.backgroundColor = [UIColor clearColor];
    [label setFont:[UIFont fontWithName:@"GillSans-Bold" size:24.0]];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor whiteColor];
    label.adjustsFontSizeToFitWidth = YES;
    label.text = self.title;    
    self.navigationItem.titleView = label;
}
0 голосов
/ 17 января 2013

Это сработало для меня:

+ (void)setNavBarTitle:(NSString *)title forUINavigationItem:(UINavigationItem*)navigationItem
{
    UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)] autorelease];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:24];
    label.textAlignment = UITextAlignmentCenter;
    label.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
    label.textColor = [UIColor whiteColor];
    label.adjustsFontSizeToFitWidth = YES;
    label.text = title;
    [label sizeToFit];
    navigationItem.titleView = label;
}
0 голосов
/ 20 сентября 2012

Я думаю, что эта проблема w.r.t rootviewcontroller. Панель вкладок определена в вашем корневом контроллере представления, верно?

Оттуда, если вы нажмете и выскочит через навигационные контроллеры - все содержимое будет одинаковым независимо от навигации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...