如何为iPhone创build一个黑色渐变的UIButton?

我想在iOS中创build一个具有普通黑色渐变主题的UIButton。 我已经看了文档,似乎无法弄清楚如何做到这一点。 当我创buildbutton,我得到一个没有颜色的圆形矩形button。

这是我的代码:

UIButton* leagueTeamButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

关于如何将标准主题黑色渐变添加到button的任何build议?

在Photoshop或任何image processing软件中制作一个(或两个,如果你想要它改变外观时),并把它放到你的项目的资源文件夹,使用下面的代码添加图像作为一个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 (ie darker one) when user press the button 

你也可以很容易地使用图层:

 -(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]; } 

这个方法使得一个好看的自定义button。 我结合了梯度图层和亮度图层的例子。

  -(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]; } 

将所有button附加到IBOutlet集合中…

  @property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *bigbuttongroup; 

…然后在需要时运行该方法

  for(UIButton *btn in self.bigbuttongroup) { [self myButtonChange:btn]; } 

您可以有没有渐变效果的黑色背景button,您必须将其背景色设置为黑色,并键入为自定义button。 对于渐变效果,我会build议你把一个图像作为你的button的背景图像,并将其types设置为自定义button。

听到是使用渐变颜色制作视图的一个示例,您可以使用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];