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