我不知道为什么会出现这种效果,但一种方法是避免圆角矩形。
我总是使用自定义按钮。您可以以任何您想要的方式在代码中自定义它们。
例如:
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,您可以为其设置阴影。 This 是一个很好的教程。
您还可以添加渐变背景以使按钮更美观,如下所示:
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;
如您所见,一个不错的方法是使用一些全局 int 变量来定义应用程序皮肤的 RGB。这样你可以在几秒钟内修改它。
因此,通过使用这种方式,您可以不受 Apple 对 SDK 版本所做的更改的影响。
而且你可以用任何你想要的方式定制它,比你在 IB 中获得的成就要多得多。
希望这会有所帮助。
干杯!