UIButton Rounded Rect不需要的3D效果

时间:2012-10-04 11:32:37

标签: iphone ios uibutton

我在RoundedRect类型的笔尖上有几个UIButton,在iOS 6看起来很漂亮之前。在iOS 6中虽然他们已经获得了一个我无法摆脱的3D效果边框(我提供了一张照片,但我的名声太过于微不足道)。任何人都可以建议如何让平坦的回头看看?

我相信这将成为我曾经问过的最愚蠢的问题,答案很简单,我会踢自己一个星期。但我找不到它,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分: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,您可以为其设置阴影。 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 vars来定义应用程序皮肤的RGB。这样您就可以在几秒钟内修改它。

因此,通过这种方式,您可以了解Apple对SDK版本所做的更改。 您可以以任何您想要的方式对其进行自定义,实现比您在IB中获得的更多。

希望这有帮助。

干杯!