Заголовок и субтитры с разным размером шрифта для UIButton - PullRequest
2 голосов
/ 27 мая 2011

Мне понадобится UIButton для отображения двух строк текста, где первая действует как заголовок, а вторая как какой-то субтитр, поэтому размер шрифта должен быть меньше.К настоящему времени у моей кнопки есть две строки, пользовательский шрифт, и содержимое для заголовка / субтитра состоит из UILabel каждой.

UIFont *displayFont = [UIFont fontWithName:@"Chalkboard" size:15];
NSString *buttonLabel;
UILabel *headline = [[UILabel alloc] init];
headline.text = @"This is the title";
UILabel *subtitle = [[UILabel alloc] init];
subtitle.text = @"this is the sub";

buttonLabel = [NSString stringWithFormat:@"%@\n%@", headline.text, subtitle.text];
[openDetail.titleLabel setLineBreakMode:UILineBreakModeWordWrap];
[openDetail setTitle:buttonLabel forState:UIControlStateNormal];
[openDetail.titleLabel setTextAlignment:UITextAlignmentCenter];
openDetail.titleLabel.font = displayFont;

Я попытался установить для самих ярлыков значение displayFont, поэтому яможет сделать секунду UIFont, сделав из нее субтитры.К сожалению, метка кнопки не будет такого шрифта, если я оставлю остальные, как показано выше, но вернусь к Arial, я думаю, что это так, и размер шрифта не изменился вообще.

Любая идея, как я мог бы достичь меньшего размера шрифта во второй строке?

Дополнительный вопрос для шрифта: я добавил Chalkboard.ttc к своим ресурсам и добавил его в качестве записи в моем info.plist как «предоставленные шрифты»по заявке ".Тем не менее, если я попытаюсь установить шрифт в IB, мне будет показан другой шрифт (очень похожий на Helvetica).Неужели мне сейчас нужно программно настраивать каждый шрифт кнопок?

Ответы [ 2 ]

4 голосов
/ 27 мая 2011

Попробуйте это

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setFrame:CGRectMake(20 , 13, 200, 85)];
UILabel *title = [[UILabel alloc]initWithFrame:CGRectMake(8, 8, 185, 30)];
[title setBackgroundColor:[UIColor clearColor]];
[title setFont:[UIFont fontWithName:@"Chalkboard" size:14]];
[title setFont:[UIFont boldSystemFontOfSize:18]];
title.text=@"This is the title";
[title setTextColor:[UIColor blackColor]];
[btn    addSubview:title];

UILabel *subtitle = [[UILabel alloc]initWithFrame:CGRectMake(8, 20, 185, 30)];
[subtitle setBackgroundColor:[UIColor clearColor]];
[subtitle setFont:[UIFont fontWithName:@"Helvetica" size:14]];
subtitle.text=@"This is the sub";
[subtitle setTextColor:[UIColor blackColor]];
[btn    addSubview:subtitle];

[title  release];
[subtitle release];

[self.view addSubview:btn];
0 голосов
/ 27 мая 2011

Ваша проблема в том, что в используемой вами системной кнопке есть только одна метка. И это может иметь только один шрифт.

Если вам нужны более сложные кнопки, вы должны создать их самостоятельно.

Один из вариантов для вас - просто добавить субтитры к существующей кнопке. Вот простой пример. Я предполагаю, что у вас есть выход для кнопки IB под названием myButton.

UILabel *subTitle = [[[UILabel alloc] initWithFrame:CGRectMake(0, 20, 100, 30)] autorelease];
[subTitle setText:@"Subtitle"];
[subTitle setTextColor:[UIColor blackColor]];
[subTitle setBackgroundColor:[UIColor clearColor]];
[subTitle setFont:[UIFont fontWithName:@"American Typewriter" size:12]];

[myButton setTitle:@"Main title" forState:UIControlStateNormal];
[myButton addSubview:subTitle];

Если это то, что вам нужно в нескольких местах, вам следует превратить кнопку в ее собственный класс с хорошими атрибутами заголовка и подзаголовка. На самом деле вы должны сделать это в любом случае. : -)

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