UIButton 显示 BackgroundImage、Image 和 Title

Posted

技术标签:

【中文标题】UIButton 显示 BackgroundImage、Image 和 Title【英文标题】:UIButton to show BackgroundImage, Image and Title 【发布时间】:2012-05-07 09:32:52 【问题描述】:

我想创建一个使用其setBackgroundImagesetImagesetTitle 属性的UIButton,但是当我将setTitlesetImagesetBackgroundImage 组合添加时,标题不会出现。

我尝试了以下方法。

[button setBackgroundImage:[UIImage imageNamed:@"image3.jpg"] forState:UIControlStateNormal]; 
[button setImage:[UIImage imageNamed:@"month_pct_general.png"] forState:UIControlStateNormal];
[button setTitle:[NSString stringWithFormat:@"%d",[button tag]] forState:UIControlStateNormal]; 
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
[button.titleLabel setFont:[UIFont boldSystemFontOfSize:20.0f]]; 
[button setTitleEdgeInsets:UIEdgeInsetsMake(45, 0, 0, 25)];

【问题讨论】:

您使用的是自定义类型的按钮吗? 你用过这个语法吗[button setTitle;@"name" forState:UIControlstateNormal]; [按钮 setBackgroundImage:[UIImage imageNamed:@"image3.jpg"] forState:UIControlStateNormal]; [按钮 setImage:[UIImage imageNamed:@"month_pct_general.png"] forState:UIControlStateNormal]; [button setTitle:[NSString stringWithFormat:@"%d",[button tag]] forState:UIControlStateNormal]; [按钮 setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button.titleLabel setFont:[UIFont boldSystemFontOfSize:20.0f]]; [按钮 setTitleEdgeInsets:UIEdgeInsetsMake(45, 0, 0, 25)]; setImage 覆盖标题,怎么办 【参考方案1】:

按钮上的标题和所有图像的标题上,所以像这样在图像上添加标签。

UIButton *myButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
[myButton setFrame:CGRectMake(0,3,70,32)];
[myButton setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(compete) forControlEvents:UIControlEventTouchUpInside];
UILabel *Label=[[UILabel alloc]initWithFrame:CGRectMake(6, 5, 60, 20)];
[Label setText:@"label"];

Label.backgroundColor=[UIColor clearColor];
[Label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
Label.textColor=[UIColor whiteColor];
[myButton addSubview:Label];

您的所有图片仅在标题上方,因此您的标题在背景中,因此请在图片视图上使用标签。

【讨论】:

如果这对您有帮助,请通知我们。 这个答案有效,但不是正确的解决方案。您需要更改 UIButton 的 titleLabelEdgeInsets 属性。图像将标签推向右侧。这就是为什么你看不到它。【参考方案2】:

如果您使用界面生成器制作 GUI,则单击标签并转到编辑器-> 排列-> 发送到前面。

【讨论】:

以上是关于UIButton 显示 BackgroundImage、Image 和 Title的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 标题不显示

UIButton 不会显示标题

uibarbutton 项目未显示 uibutton

显示自定义 UIButton 的问题

禁用 UIButton 的突出显示 UIControl 状态

Swift3:UITableViewCell 和 UIButton - 通过单击 UIButton 显示和隐藏 UITableViewCell