Iphone UIButton圆角矩形不需要的3D效果

Iphone UIButton圆角矩形不需要的3D效果,iphone,ios,uibutton,Iphone,Ios,Uibutton,我在RoundedRect类型的笔尖上有两个UIButton,在iOS 6之前,它看起来既漂亮又扁平。在iOS 6中,虽然他们获得了我无法摆脱的3D效果边框(我会提供一张图片,但我的声誉太低)。有人能建议如何让这套漂亮的公寓看起来更漂亮吗 我相信这将是我问过的最愚蠢的问题,答案将是如此简单,我会踢自己一个星期。但是我找不到它,任何帮助都将不胜感激。我不知道为什么会出现这种效果,但一种方法是避免使用圆角矩形。 我总是使用自定义按钮。您可以以任何方式在代码中自定义它们 例如: button.laye

我在RoundedRect类型的笔尖上有两个UIButton,在iOS 6之前,它看起来既漂亮又扁平。在iOS 6中,虽然他们获得了我无法摆脱的3D效果边框(我会提供一张图片,但我的声誉太低)。有人能建议如何让这套漂亮的公寓看起来更漂亮吗


我相信这将是我问过的最愚蠢的问题,答案将是如此简单,我会踢自己一个星期。但是我找不到它,任何帮助都将不胜感激。

我不知道为什么会出现这种效果,但一种方法是避免使用圆角矩形。 我总是使用自定义按钮。您可以以任何方式在代码中自定义它们

例如:

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;
正如你所看到的,一个很好的方法是使用一些全局int变量来定义应用程序皮肤的RGB。这样,您可以在几秒钟内修改它

因此,通过使用这种方式,您可以了解苹果对SDK版本所做的更改。 你可以用任何你想要的方式定制它,获得比你在IB中所能获得的更多

希望这有帮助


干杯

我不知道为什么会出现这种效果,但一种方法是避免圆角矩形。 我总是使用自定义按钮。您可以以任何方式在代码中自定义它们

例如:

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;
正如你所看到的,一个很好的方法是使用一些全局int变量来定义应用程序皮肤的RGB。这样,您可以在几秒钟内修改它

因此,通过使用这种方式,您可以了解苹果对SDK版本所做的更改。 你可以用任何你想要的方式定制它,获得比你在IB中所能获得的更多

希望这有帮助


干杯

您是否尝试过将按钮作为自定义按钮,然后在其上设置图像。您是否尝试过使用按钮的图层。使用图层,我们可以为您的评论设置按钮的边框和阴影颜色,是的,我知道我可以使用自定义按钮,但在这种情况下,这让我很恼火-我想我可能错过了一个简单的属性设置,至少知道它不是那么简单,我感到欣慰。你是否尝试过将按钮作为自定义按钮,然后在其上设置图像。你试过按钮的层。使用层,我们可以设置按钮的边框和阴影的颜色对于您的评论,是的,我知道我可以使用自定义按钮,但在这个例子中,这让我很恼火-我想我可能错过了一个简单的属性设置,至少知道它不是那么简单,我感到欣慰。