我需要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)。我现在必须以编程方式设置每个按钮字体吗?
答案 0 :(得分:4)
试试这个
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];
答案 1 :(得分:0)
您的问题是您使用的系统按钮中只有一个标签。那只能有一种字体。
如果你想要更复杂的按钮,你必须自己构建它们。
您可以选择将副标题添加到现有按钮。这是一个简单的例子。我假设你有一个名为myButton的IB按钮的插座。
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];
如果您需要在多个地方使用,则应将按钮转换为自己的类,并为标题和副标题提供良好的属性。实际上你应该这样做。 : - )