自定义UIButton

时间:2011-04-21 17:13:45

标签: iphone ios colors uibutton

我在iphone的内置应用程序中看到有一个红色删除UIButton。我的问题是,如何更改按钮的颜色。通常在属性检查器中有一个“tint”属性,但在使用UI按钮时没有。 有没有办法以编程方式更改颜色? 我感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

UIButton的色调仅适用于UIGlassButton,这是私有未记录的API。使用 private 未记录的API的一些解决方案是使用图像或尝试drawing your own gradient

资源:

UIGlassButton in iPhone

http://cocoawithlove.com/2008/09/drawing-gloss-gradients-in-coregraphics.html

https://github.com/dermdaly/ButtonMaker

答案 1 :(得分:3)

您可以使用按钮图层制作带颜色的按钮。首先将QuartzCore框架添加到您的项目中。然后将#import <QuartzCore/QuartzCore.h>添加到您的视图类中。要制作一个红色按钮,请执行此操作

UIButton *myButton = [UIButton buttonWithType: UIButtonTypeCustom];
[myButton setFrame: CGRectMake(10.0f, 10.0f, 300.0f, 44.0f)];
[[myButton layer] setBackgroundColor: [[UIColor redColor] CGColor]];
[self addSubview: myButton];
[myButton release];

希望这有帮助!

答案 2 :(得分:3)

如果您的按钮类型为UIButtonTypeRoundedRect而不是UIButtonTypeCustom,则在图层上设置背景颜色不起作用。

试试这个,它对我有用。

UIButton *myButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.buttonAddToOrder.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor redColor] CGColor], (id)[[UIColor redColor] CGColor], nil];
gradient.cornerRadius = 10;

[myButton.layer insertSublayer:gradient atIndex:0];

希望这可能会有所帮助。