Я использую xib-файл, который использует кнопки iOS7 по умолчанию. Они мне нравятся, если только пользователь не на iOS6 - тогда они попадают под уродливые закругленные кнопки iOS6. Это полный взлом, но решил мои проблемы. Он просто вставляет 4 слоя с каждой стороны кнопки, маскируя внешний вид.
- (void)maskUglyIos6Border:(UIButton *)button
{
CALayer *layer = [CALayer layer];
// top layer
layer.frame = CGRectMake(0, 0, button.layer.frame.size.width, 5);
layer.backgroundColor = [UIColor whiteColor].CGColor;
[button.layer addSublayer:layer];
// bottom layer
CALayer *layer2 = [CALayer layer];
layer2.frame = CGRectMake(0, button.layer.frame.size.height - 5, button.layer.frame.size.width, 5);
layer2.backgroundColor = [UIColor whiteColor].CGColor;
[button.layer addSublayer:layer2];
// left layer
CALayer *layer3 = [CALayer layer];
layer3.frame = CGRectMake(0, 0, 5, button.layer.frame.size.height);
layer3.backgroundColor = [UIColor whiteColor].CGColor;
[button.layer addSublayer:layer3];
// right layer
CALayer *layer4 = [CALayer layer];
layer4.frame = CGRectMake(button.layer.frame.size.width - 5, 0, 5, button.layer.frame.size.height);
layer4.backgroundColor = [UIColor whiteColor].CGColor;
[button.layer addSublayer:layer4];
}
Чтобы сохранить внешний вид iOS7, я бы порекомендовал отключить подсветку и вместо этого использовать showsTouchWhenHighlighted
.