segunda-feira, junho 06, 2011

Objective-C custom button

Aqui um snippet de código que usei para customizar um botão no objective-c.

O código adiciona uma linha superior com efeito 3D, muda a cor da borda, adiciona um background em degrade e cria uma borda arredondada. Isso da a impressão de um botão mais dinâmico.

Para utilizar o código abaixo é preciso adicionar a biblioteca QuartzCore e criar uma view com um botão dentro. Feito isso é só chamar o método da seguinte maneira:
[self drawCustomViewButton:myCustomView];

#import <QuartzCore/QuartzCore.h>

- (void)drawCustomViewButton:(UIView*)v {
v.layer.cornerRadius = 3;
v.layer.borderWidth = 1;
v.layer.borderColor = [[UIColor colorWithRed:1/255.0 green:1/255.0 blue:1/255.0 alpha:1.0] CGColor];
CALayer *line = [CALayer layer];
line.frame = CGRectMake(3, 1, v.frame.size.width-6, 1);
line.backgroundColor = [[UIColor colorWithRed:200/255.0 green:200/255.0 blue:200/255.0 alpha:1.0] CGColor];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = v.bounds;
gradient.colors = [NSArray arrayWithObjects:
  (id)[[UIColor colorWithRed:1/255.0 green:1/255.0 blue:1/255.0 alpha:1.0] CGColor], 
  (id)[[UIColor colorWithRed:200/255.0 green:200/255.0 blue:200/255.0 alpha:1.0] CGColor], nil];
gradient.cornerRadius = 3;
[v.layer insertSublayer:gradient atIndex:0];
[v.layer insertSublayer:line atIndex:1];
}