我想在iOS中创建一个带有普通黑色渐变主题的UIButton。我查看了文档,但似乎无法弄清如何实现。当我创建按钮时,我得到一个没有颜色的圆角矩形按钮。
这是我的代码:
UIButton* leagueTeamButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
有什么建议可以让我在按钮上添加标准主题黑色渐变?
我想在iOS中创建一个带有普通黑色渐变主题的UIButton。我查看了文档,但似乎无法弄清如何实现。当我创建按钮时,我得到一个没有颜色的圆角矩形按钮。
这是我的代码:
UIButton* leagueTeamButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
你还可以使用图层轻松实现:
-(void) addGradient:(UIButton *) _button {
// Add Border
CALayer *layer = _button.layer;
layer.cornerRadius = 8.0f;
layer.masksToBounds = YES;
layer.borderWidth = 1.0f;
layer.borderColor = [UIColor colorWithWhite:0.5f alpha:0.2f].CGColor;
// Add Shine
CAGradientLayer *shineLayer = [CAGradientLayer layer];
shineLayer.frame = layer.bounds;
shineLayer.colors = [NSArray arrayWithObjects:
(id)[UIColor colorWithWhite:1.0f alpha:0.4f].CGColor,
(id)[UIColor colorWithWhite:1.0f alpha:0.2f].CGColor,
(id)[UIColor colorWithWhite:0.75f alpha:0.2f].CGColor,
(id)[UIColor colorWithWhite:0.4f alpha:0.2f].CGColor,
(id)[UIColor colorWithWhite:1.0f alpha:0.4f].CGColor,
nil];
shineLayer.locations = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:0.5f],
[NSNumber numberWithFloat:0.5f],
[NSNumber numberWithFloat:0.8f],
[NSNumber numberWithFloat:1.0f],
nil];
[layer addSublayer:shineLayer];
}
这种方法可以创建一个漂亮的自定义按钮。 我结合了渐变图层和高光图层的示例。
-(void) myButtonChange: (UIButton*) btn
{
[btn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted];
CAGradientLayer *btnGradient = [CAGradientLayer layer];
btnGradient.frame = btn.bounds;
btnGradient.colors = [NSArray arrayWithObjects:
(id)[[UIColor colorWithRed:255.0f/255.0f green:255.0f/255.0f blue:255.0f/255.0f alpha:.6f] CGColor],
(id)[[UIColor colorWithRed:200.0f/255.0f green:200.0f/255.0f blue:200.0f/255.0f alpha:.4f] CGColor],
(id)[[UIColor colorWithRed:150.0f/255.0f green:150.0f/255.0f blue:150.0f/255.0f alpha:.4f] CGColor],
(id)[[UIColor colorWithRed:100.0f/255.0f green:100.0f/255.0f blue:100.0f/255.0f alpha:.4f] CGColor],
(id)[[UIColor colorWithRed:50.0f/255.0f green:50.0f/255.0f blue:50.0f/255.0f alpha:.4f] CGColor],
(id)[[UIColor colorWithRed:5.0f/255.0f green:5.0f/255.0f blue:5.0f/255.0f alpha:.4f] CGColor],
nil];
[btn.layer insertSublayer:btnGradient atIndex:0];
CAGradientLayer *glossLayer = [CAGradientLayer layer];
glossLayer.frame = btn.bounds;
glossLayer.colors = [NSArray arrayWithObjects:
(id)[UIColor colorWithWhite:1.0f alpha:0.4f].CGColor,
(id)[UIColor colorWithWhite:1.0f alpha:0.1f].CGColor,
(id)[UIColor colorWithWhite:0.75f alpha:0.0f].CGColor,
(id)[UIColor colorWithWhite:1.0f alpha:0.1f].CGColor,
nil];
glossLayer.locations = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:0.5f],
[NSNumber numberWithFloat:0.5f],
[NSNumber numberWithFloat:1.0f],
nil];
[btn.layer insertSublayer:glossLayer atIndex:0];
CALayer *btnLayer = [btn layer];
[btnLayer setMasksToBounds:YES];
UIColor*mycolor = btn.backgroundColor;
[btn.layer setBorderColor:[mycolor CGColor]];
[[btn layer] setBorderWidth:2.0f];
[[btn layer] setCornerRadius:10.0f];
}
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *bigbuttongroup;
...然后在需要的时候运行该方法
for(UIButton *btn in self.bigbuttongroup)
{
[self myButtonChange:btn];
}
在Photoshop或任何图像处理软件中制作一个按钮(如果您希望在按下时更改外观,则可以制作两个),并将其放入项目的资源文件夹中,使用以下代码将图像添加为UIButton:
UIButton *yourButton=[UIButton buttonWithType:UIButtonTypeCustom];
[yourButton setFrame:CGRectMake(0,0,10,10)];
[yourButton addTarget:self action:@selector(functionYouWantToCall:) forControlEvents:UIControlEventTouchUpInside];
[yourButton setImage:[UIImage imageNamed:@"imageNormalState.png"] forState:UIControlStateNormal];
[yourButton setImage:[UIImage imageNamed:@"imageWhenPressDown.png"] forState:UIControlStateHighlighted]; // option if you want to display another image (i.e. darker one) when user press the button
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
static NSMutableArray *colors = nil;
if (colors == nil) {
colors = [[NSMutableArray alloc] initWithCapacity:3];
UIColor *color = nil;
color = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
[colors addObject:(id)[color CGColor]];
color = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
[colors addObject:(id)[color CGColor]];
color = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
[colors addObject:(id)[color CGColor]];
}
// [(CAGradientLayer *)self.layer setColors:colors];
// [(CAGradientLayer *)self.layer setLocations:[NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:0.48], [NSNumber numberWithFloat:1.0], nil]];
gradient.colors = colors;
[view.layer insertSublayer:gradient atIndex:0];
[self.view addSubview:view];
你可以拥有没有渐变效果的黑色背景按钮,只需要将其背景颜色设置为黑色并将类型设置为"custombutton"即可。如果需要渐变效果,我建议您将图像作为按钮的背景图片,并将其类型设置为"custom button"。