2012-10-12 46 views
0

我有以下代码来创建渐变按钮:iPhone渐变按钮问题

CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
gradientLayer.frame = btnSignUp.layer.bounds; 

gradientLayer.colors = [NSArray arrayWithObjects: 
         (id)[UIColor colorWithWhite:1.0f alpha:0.1f].CGColor, 
         (id)[UIColor colorWithWhite:0.4f alpha:0.5f].CGColor, 
         nil]; 

gradientLayer.cornerRadius = btnSignUp.layer.cornerRadius; 

[btnSignUp.layer addSublayer:gradientLayer]; 

然而,底部圆角都画满了。我无法弄清楚为什么会发生这种情况。有任何想法吗?

这里是图片:http://imageshack.us/a/img546/509/btnw.png

+0

是否已确认btnSignUp.layer.cornerRadius是一个非零值? – rmaddy

+0

就是这样。谢谢,rmaddy。 – Darko

回答

0

如果你的目标的iOS 5.0或更高版本,您可能需要创建渐变的PNG文件和伸展它来填充,而不是用层搞乱按钮的背景。我相信使用PNG的性能影响更好。

因此,像:

static UIEdgeInsets insets = {15, 15, 15, 15}; (or whatever your insets are) 
UIImage* image = [[UIImage imageNamed:@"myImage"] resizableImageWithCapInsets:insets]; 
[_button setBackgroundImage:image forState:UIControlStateNormal]; 
0

我想你想要的是_button.layer.masksToBounds = YES;