2012-10-12 49 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;