1

我试过tintColor = [UIColor redColor]了,它完成了这项工作,但它只在按下按钮时显示预期的颜色。

UIButtonTypeRoundedRect 类型的 UIButtons 的着色中,他们回答了同样的问题,但是您需要一个图像来实现它,有没有办法在没有图像的情况下做到这一点?

  • 这就是我想要的:图片

  • 这是我使用图像得到的: 图像

记住...没有图像!

4

3 回答 3

2

使用图像是一种方法,但我想您已经清楚在您的问题中您不希望使用图像。这是我以编程方式创建和着色的按钮。

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(100, 100, 100,50);
[btn setTitle:@"Hello" forState:UIControlStateNormal];
[btn setBackgroundColor:[UIColor colorWithRed:128.0/255.0f green:0.0/255.0f blue:0.0/255.0f alpha:0.7]];
btn.frame = CGRectMake(100.0, 100.0, 120.0, 50.0);//width and height should be same value
btn.clipsToBounds = YES;

btn.layer.cornerRadius = 20;//half of the width
btn.layer.borderColor=[UIColor redColor].CGColor;
btn.layer.borderWidth=2.0f;

[self.view addSubview:btn];

您可以随心所欲地更改[UIColor ColorWithRed:wo,甚至可以使用[UIColor redColor]或任何其他您想做的事情。

这是一个屏幕截图:

在此处输入图像描述

无法为圆形按钮添加背景颜色,将按钮类型更改为自定义,然后使用石英芯设置圆形按钮。因此,将其添加到您的项目中并将其导入到 .m 中,它应该可以工作。希望这对你有用。

要将按钮更改为类似于您显示的图像的内容,请将框架更改为:

btn.frame = CGRectMake(50.0, 100.0, 200.0, 50.0);

并将半径更改为:

btn.layer.cornerRadius = 7;

应该这样做。

于 2013-04-15T21:17:34.230 回答
1

您可以创建一个方法来UIImage从 a生成一个UIColor,然后将返回的图像设置为按钮的背景,例如:

- (UIImage *)imageWithColor:(UIColor *)color {
    CGRect rect = CGRectMake(0, 0, 1, 1);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);

    CGContextFillRect(context, rect);
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}


UIImage *image = [self imageWithColor:[UIColor colorWithRed:151.0/255.0
                                                      green:36.0/255.0
                                                       blue:40.0/255.0
                                                      alpha:1.0]];
[self.button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.button setBackgroundImage:image forState:UIControlStateNormal];
self.button.layer.cornerRadius = 6.0;
self.button.layer.borderWidth = 1.0;
self.button.layer.borderColor = [UIColor darkGrayColor].CGColor;
self.button.clipsToBounds = YES;

使用这个我得到

在此处输入图像描述

于 2013-04-15T20:24:12.023 回答
0

我应该这样做:

从 Internet 下载按钮图像或自己创建图像,使其看起来像您想要的样子。Photoshop 可能是您最好的选择。确保您有透明背景并将其保存为 .png。然后将其添加到您的 xcode 项目中。制作按钮:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn setBackgroundImage:[UIImage imageNamed:@"yourImage.png"] forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(buttonAction)
         forControlEvents:UIControlEventTouchDown];
    [btn setTitle:@"Use it!" forState:UIControlStateNormal];
    btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
    btn.titleLabel.font = [UIFont systemFontOfSize:20];
    btn.frame = CGRectMake(position and size of your button);
    [self.view addSubview:btn];

yourImage.png 需要替换为您的图像名称。

buttonAction是您的按钮在被点击时执行的操作。如果你只是添加:

- (void) buttonAction
{

}

在文件中的任何位置,您在这些括号之间添加的任何内容都将被执行。

确保按钮的大小与 按钮的大小相同CGRect,以确保它看起来没有被拉长或任何您不希望它看起来像的东西。

如果您有任何问题,请随时问他们。

希望这对你有帮助

于 2013-04-16T08:12:54.793 回答