1

在这里,我遇到了一种情况,我需要添加三个图像来制作一个按钮。

我们有图像的三个部分,左桅杆部分、中间部分和右端部分。

图片左侧 -> 图片按钮的左侧部分。中间 -> 图片按钮的中间部分。右侧 ->按钮的右侧部分。

由于中间的文本,即按钮的标题因按钮而异,我不想每次都创建具有不同尺寸的单独图像。我认为应该有一种方法可以合并这些按钮以根据所提供按钮的宽度制作一个完整的按钮。

在此处输入图像描述

完成后,完成按钮应如下所示。

我希望你得到我需要的东西。请提出一些解决方案。

4

2 回答 2

1

为此,您使用可拉伸图像。

您制作的图像将是具有左侧、中间和右侧部分的单个图像。

中间部分只需要一个像素宽。(想象一下你的按钮会是什么样子,两端之间只有一个很小的空间。这就是你的形象。

然后你使用这个代码......

UIImage *image = [UIImage imageNamed:@"MyImage"];

UIImage *stretchableImage = [image stretchableImageWithLeftCapWidth:10 topCapHeight:0];

[myButton setBackgroundImage:stretchableImage forState:UIControlStateNormal];

然后,这将获取该窄图像并在您的大写宽度之后获取像素(即本示例中的 10),并且它将重复该单个像素所需的次数以获得按钮的完整宽度。

然后,无论按钮大小,您都可以在任何地方重复使用此单个图像。

于 2013-01-19T08:05:50.957 回答
-1

您可以使用按钮标题标签来设置文本,同时保持背景图像通用。

例如: - 作品

      [btn setTitle:@"something" forState:UIControlStateNormal];
      [btn setTitle:@"something" forState:UIControlStateHighlighted];
      [btn setTitle:@"something" forState:UIControlStateDisabled];
      [btn setTitle:@"something" forState:UIControlStateSelected];

您可以使用 setImage:forState 方法或 setBackgrounImage:forState 将图像设置为按钮

例如:-
btnImage = [UIImage imageNamed:@"image.png"]; [btnTwo setImage:btnImage forState:UIControlStateNormal]; //或设置为背景图片

      [btnTwo setBackgroundImage:[UIImage imageNamed:@"name.png"] forState:UIControlStateNormal];

您可以使用 UIButton 的 font 属性来使用图像中使用的不同字体

例如:- btn.titleLabel.font = [UIFont systemFontOfSize:size];

  //OR 

您还可以使用类似的方式设置字体大小和字体样式。它比你要求的要多一点,但是嘿,这到底是什么......

      [btn.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];

而且...如果您感觉活泼,可以通过实现此代码然后检查 xCode 调试器中的输出来找到可用字体列表。

代码:

      NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
      NSArray *fontNames;
      NSInteger indFamily, indFont;
      for (indFamily=0; indFamily<[familyNames count]; ++indFamily)
      {
      NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
      fontNames = [[NSArray alloc] initWithArray:
        [UIFont fontNamesForFamilyName:
        [familyNames objectAtIndex:indFamily]]];
      for (indFont=0; indFont<[fontNames count]; ++indFont)
      {
         NSLog(@"    Font name: %@", [fontNames objectAtIndex:indFont]);
      }
      } 
于 2013-01-19T09:44:56.197 回答