我有一个UI按钮,我想在其上放置两个标签,类似于单元格的标题文字和详细文字。
我希望按钮的主文字字体更大,并且下面有更小的细节文字。
这可能吗?我试图在一个按钮上添加多行,但我需要为每一行设置不同的文本大小,因此设置titleLabel的lineBreakMode和numberOfLines并不是很有效。
答案 0 :(得分:6)
这是我们最终使用的代码。 John Wang的协助。
感谢大家的建议!
// Formats a label to add to a button. Supports multiline buttons
// Parameters:
// button - the button to add the label to
// height - height of the label. usual value is 44
// offset - the offset from the top of the button
// labelText - the text for the label
// color - color of the text
// formatAsBold - YES = bold NO = normal weight
// tagNumber - tag for the label
- (void) formatLabelForButton: (UIButton *) button withHeight: (double) height andVerticalOffset: (double) offset andText: (NSString *) labelText withFontSize: (double) fontSize withFontColor: (UIColor *) color andBoldFont:(BOOL) formatAsBold withTag: (NSInteger) tagNumber {
// Get width of button
double buttonWidth= button.frame.size.width;
// Initialize buttonLabel
UILabel *buttonLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, offset, buttonWidth, height)];
// Set font size and weight of label
if (formatAsBold) {
buttonLabel.font = [UIFont boldSystemFontOfSize:fontSize];
}
else {
buttonLabel.font = [UIFont systemFontOfSize:fontSize];
}
// set font color of label
buttonLabel.textColor = color;
// Set background color, text, tag, and font
buttonLabel.backgroundColor = [UIColor clearColor];
buttonLabel.text = labelText;
buttonLabel.tag = tagNumber;
// Center label
buttonLabel.textAlignment = UITextAlignmentCenter;
// Add label to button
[button addSubview:buttonLabel];
[buttonLabel autorelease];
} // End formatLabelForButton
答案 1 :(得分:4)
我建议的一个技巧是在UILabels顶部放置一个透明内部的UIButton。我之前使用过这个技巧,虽然它在维护和i18n方面可能会出现一些问题,但它的确很像魅力。
这是使用上述建议的5分钟样本。
如果有更多时间,你可以用圆角制作更好的标签。
答案 2 :(得分:1)
您应该能够为其添加子视图。由于一切都是视图,所以一切都可能有子视图。
我会将其子类化并在子类中放置标签,然后您可以扩展文本和子文本的属性以更改它们的值。
不是说它可以100%工作。但是我的头脑。 UIView可以有子视图