なぜその効果が現れたのかはわかりませんが、これを行う1つの方法はRounded Rectを避けることです. 私はいつもカスタムボタンを使用しています。これらはコードで自由にカスタマイズできます。
例えば:
button.layer.cornerRadius = 8; //this gives it rounded corners
button.layer.borderColor = [[UIColor redColor] CGColor] ; // this is how you set a border
button.layer.borderWidth = 2; //this is how you set the width of the border
UIButton のレイヤー メンバーは CALayer であり、シャドウを設定できます。これは良いチュートリアルです。
次のように、ボタンをより良くするためにグラデーションの背景を追加することもできます。
CAGradientLayer *layer = [CAGradientLayer layer];
layer.colors = [NSArray arrayWithObjects:
(id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.9] CGColor],
(id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.8] CGColor],
(id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.7] CGColor],
(id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.6] CGColor],
(id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.5] CGColor],
(id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.4] CGColor],
(id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.3] CGColor],
(id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.2] CGColor],
(id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.1] CGColor],
(id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.0] CGColor],
nil];
layer.locations = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.1],
[NSNumber numberWithFloat:0.2],
[NSNumber numberWithFloat:0.3],
[NSNumber numberWithFloat:0.4],
[NSNumber numberWithFloat:0.5],
[NSNumber numberWithFloat:0.6],
[NSNumber numberWithFloat:0.7],
[NSNumber numberWithFloat:0.8],
[NSNumber numberWithFloat:0.9],
[NSNumber numberWithFloat:1.0],
nil];
layer.startPoint = CGPointMake(0, 0);
layer.frame = button.layer.bounds;
layer.endPoint = CGPointMake(0, 1);
layer.contentsGravity = kCAGravityResize;
[button.layer insertSublayer:layer below:button.titleLabel.layer];
button.layer.masksToBounds = TRUE;
ご覧のように、アプリのスキンの RGB を定義するグローバルな int 変数をいくつか用意するとよいでしょう。このようにして、数秒で変更できます。
したがって、この方法を使用することで、Apple が SDK のバージョンに対して行った変更の影響を受けなくなります。また、必要に応じてカスタマイズすることもでき、IB で得られるよりもはるかに多くのことを達成できます。
お役に立てれば。
乾杯!