带有图像的UIButton中的标题

时间:2013-02-20 16:42:13

标签: objective-c cocoa-touch

我在UIButton中设置了图片,但我需要在此图片上方设置标题。我怎么能这样做?

[button setImage:[UIImage imageNamed:@"btn_select_s.png"] forState:0];
[button setImage:[UIImage imageNamed:@"btn_select_p.png"] forState:1];
[button setTitle:@"my title" forState:0];

4 个答案:

答案 0 :(得分:4)

您可以使用UIButton的titleEdgeInsets和imageEdgeInsets来根据需要定位标题和图片。

See Apple's UIButton reference documentation

例如,在UIButton子类中:

[self setImageEdgeInsets:UIEdgeInsetsMake(imageFrame.origin.y, imageFrame.origin.x, 0, 0)];
[self setTitleEdgeInsets:UIEdgeInsetsMake(labelFrame.origin.y, labelFrame.origin.x, 0, 0)];

答案 1 :(得分:1)

您需要设置按钮的背景图片:

[button setBackgroundImage:[UIImage imageNamed:@"foo"] forState:UIControlStateNormal];

答案 2 :(得分:0)

[button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
[button setContentVerticalAlignment:UIControlContentVerticalAlignmentTop];

//Use you values for edge insets here.
[button setTitleEdgeInsets:UIEdgeInsetsMake(20.0f, 10.0f, 0.0f, 0.0f)];

答案 3 :(得分:-1)

这里有一个方便的UIButton子类:
https://github.com/lionhylra/FlexButton

它具有以下功能: - 它提供4种布局样式 - 它的工作方式与UIButton一样简单 - 调整按钮大小时,imageView和titleLabel的大小将相应且正确地更改。他们不会陷入混乱。这是使用边缘插入的本质区别 - TitleLabel和imageView将始终垂直和水平居中。