带有多个标签的iOS UIButton

时间:2011-05-03 02:10:11

标签: ios uibutton uilabel

我有一个UI按钮,我想在其上放置两个标签,类似于单元格的标题文字和详细文字。

我希望按钮的主文字字体更大,并且下面有更小的细节文字。

这可能吗?我试图在一个按钮上添加多行,但我需要为每一行设置不同的文本大小,因此设置titleLabel的lineBreakMode和numberOfLines并不是很有效。

3 个答案:

答案 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分钟样本。 Label behind button

如果有更多时间,你可以用圆角制作更好的标签。

答案 2 :(得分:1)

您应该能够为其添加子视图。由于一切都是视图,所以一切都可能有子视图。

我会将其子类化并在子类中放置标签,然后您可以扩展文本和子文本的属性以更改它们的值。

不是说它可以100%工作。但是我的头脑。 UIView可以有子视图