图像 + 文本 IOS

我需要一个 UIButton图像和文字。图像应该在顶部和文字下面的图像都应该是可点击的。

164876 次浏览

使用以下代码:

UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
button.imageView.frame=CGRectMake(0.0f, 0.0f, 50.0f, 44.0f);///You can replace it with your own dimensions.
UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0.0f, 35.0f, 50.0f, 44.0f)];///You can replace it with your own dimensions.
[button addSubview:label];

制作 UIImageViewUILabel,并设置图像和文本这两个... 然后放置一个自定义按钮在 image 视图和标签... 。

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"search.png"]];
imageView.frame = CGRectMake(x, y, imageView.frame.size.width, imageView.frame.size.height);
[self.view addSubview:imageView];


UILabel *yourLabel = [[UILabel alloc] initWithFrame:CGRectMake(x, y,a,b)];
yourLabel.text = @"raj";
[self.view addSubview:yourLabel];


UIButton * yourBtn=[UIButton buttonWithType:UIButtonTypeCustom];
[yourBtn setFrame:CGRectMake(x, y,c,d)];
[yourBtn addTarget:self action:@selector(@"Your Action") forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:yourBtn];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.imageView.image = [UIImage imageNamed:@"your image name here"];
button.titleLabel.text = @"your text here";

但是下面的代码会显示上面的标签和背景中的图像

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.background.image = [UIImage imageNamed:@"your image name here"];
button.titleLabel.text = @"your text here";

不需要在同一个控件中使用标签和按钮,因为 UIButton 具有 UILabel 和 UIimagview 属性。

我认为 你正在寻找这个解决方案能解决你的问题:

UIButton *_button = [UIButton buttonWithType:UIButtonTypeCustom];
[_button setFrame:CGRectMake(0.f, 0.f, 128.f, 128.f)]; // SET the values for your wishes
[_button setCenter:CGPointMake(128.f, 128.f)]; // SET the values for your wishes
[_button setClipsToBounds:false];
[_button setBackgroundImage:[UIImage imageNamed:@"jquery-mobile-icon.png"] forState:UIControlStateNormal]; // SET the image name for your wishes
[_button setTitle:@"Button" forState:UIControlStateNormal];
[_button.titleLabel setFont:[UIFont systemFontOfSize:24.f]];
[_button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; // SET the colour for your wishes
[_button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; // SET the colour for your wishes
[_button setTitleEdgeInsets:UIEdgeInsetsMake(0.f, 0.f, -110.f, 0.f)]; // SET the values for your wishes
[_button addTarget:self action:@selector(buttonTouchedUpInside:) forControlEvents:UIControlEventTouchUpInside]; // you can ADD the action to the button as well like

... 剩下的定制按钮就是你的职责了,别忘了把按钮添加到你的视图中。

更新 # 1 和 < strong > 更新 # 2

或者,你可以在 Interface Builder中添加你的按钮到你的视图中,你也可以在那里设置相同的值。它是相当相同的,但这里是这个版本也在一个简单的图片。

你在 Interface Builder也可以看到最终的结果,因为它是在屏幕截图。

enter image description here

您应该为图像创建自定义图像视图,为文本创建自定义标签,并将其作为子视图添加到按钮中。就是这样。

UIButton *yourButton = [UIButton buttonWithType:UIButtonTypeCustom];
yourButton.backgroundColor = [UIColor greenColor];
yourButton.frame = CGRectMake(140, 40, 175, 30);
[yourButton addTarget:self action:@selector(yourButtonSelected:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:yourButton];


UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, yourButton.frame.size.width, yourButton.frame.size.height/2)];
imageView1.image =[UIImage imageNamed:@"images.jpg"];
[yourButton addSubview:imageView1];


UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, yourButton.frame.size.height/2, yourButton.frame.size.width, yourButton.frame.size.height/2)];
label.backgroundColor = [UIColor greenColor];
label.textAlignment= UITextAlignmentCenter;
label.text = @"ButtonTitle";
[yourButton addSubview:label];

为了测试的目的,使用 yourButtonSelected:方法

-(void)yourButtonSelected:(id)sender{
NSLog(@"Your Button Selected");


}

我想这对你会有帮助的。

使用以下代码:

UIButton *sampleButton = [UIButton buttonWithType:UIButtonTypeCustom];
[sampleButton setFrame:CGRectMake(0, 10, 200, 52)];
[sampleButton setTitle:@"Button Title" forState:UIControlStateNormal];
[sampleButton setFont:[UIFont boldSystemFontOfSize:20]];
[sampleButton setBackgroundImage:[[UIImage imageNamed:@"redButton.png"]
stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal];
[sampleButton addTarget:self action:@selector(buttonPressed)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:sampleButton]

它真的很简单,只需添加图像到你的背景按钮,并给文字标题标签的按钮为 uicontrostatenormal。 就是这样。

[btn setBackgroundImage:[UIImage imageNamed:@"img.png"] forState:UIControlStateNormal];
[btn setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom];
[btn setTitle:@"Click Me" forState:UIControlStateNormal];

我看到了非常复杂的答案,所有的答案都使用了代码。然而,如果你使用 Interface Builder有一个非常简单的方法来做到这一点:

  1. 选择按钮并设置标题和图像。请注意,如果你设置的背景,而不是图像,然后图像将调整大小,如果它是小于按钮。IB basic image and title
  2. 通过更改边缘和插入设置两个项的位置。您甚至可以控制 Control 部分中两者的对齐方式。

IB position set IB Control set

您甚至可以通过代码使用相同的方法,而不必像其他提议的解决方案那样在内部创建 UILabel 和 UIImages。永远保持简单!

编辑: 附上一个小例子,有3件事设置(标题,图像和背景)与正确的插图 Button preview

我遇到了同样的问题,我通过创建 UIButton的一个新子类并重写 layoutSubviews:方法来解决它,如下所示:

-(void)layoutSubviews {
[super layoutSubviews];


// Center image
CGPoint center = self.imageView.center;
center.x = self.frame.size.width/2;
center.y = self.imageView.frame.size.height/2;
self.imageView.center = center;


//Center text
CGRect newFrame = [self titleLabel].frame;
newFrame.origin.x = 0;
newFrame.origin.y = self.imageView.frame.size.height + 5;
newFrame.size.width = self.frame.size.width;


self.titleLabel.frame = newFrame;
self.titleLabel.textAlignment = UITextAlignmentCenter;


}

我认为天使加西亚奥洛基的答案是另一个好的解决方案,如果你手动放置所有的 Interface Builder,但我会保留我的解决方案,因为我不必修改每个按钮的内容插入。

Xcode-9 Xcode-10现在苹果对 Edge Inset 做了一些修改,你可以在 size-monitor 下修改它。

请依照以下步骤:

第一步: 输入文本并选择要显示的图像:

enter image description here

第二步: 选择按钮控制按照您的要求,如下图所示:

enter image description here

第三步: 现在去大小检查和增加价值,根据您的要求:

enter image description here

快速版:

var button = UIButton()


newGameButton.setTitle("Новая игра", for: .normal)
newGameButton.setImage(UIImage(named: "energi"), for: .normal)
newGameButton.backgroundColor = .blue
newGameButton.imageEdgeInsets.left = -50

enter image description here

在我的例子中,我想将 UIImage添加到右边,将 UILabel添加到左边。也许我可以通过编写代码来实现这一点(如上所述) ,但我不喜欢编写代码,而是尽可能多地使用 storyboard来完成。事情是这样的:

首先, 在标签框中写下一些内容,然后选择要显示的图像:

enter image description here

这将创建一个按钮,看起来像这样:

enter image description here

接下来, 查找 Semantic并选择 从右到左(如果您没有指定任何内容,那么它将向左显示图像,向右显示标签,如上图所示) :

enter image description here

最后, 你会看到 UIImage在右边,UILabel在左边:

enter image description here

要在标签和图像之间添加空格,请转到 尺寸检查员并根据您的需要更改这些值:

enter image description here

就是这样!