0

グラデーションボタンを作成する次のコードがあります。

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

4

2 に答える 2

0

あなたが望むのは_button.layer.masksToBounds = YES;

于 2013-03-15T14:57:58.990 に答える
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];
于 2012-10-12T21:28:38.253 に答える