2016-09-28 3 views
0

Buttonのグラデーションエフェクトを追加し、サブレイヤーとしてButtonに追加しました。UAGuttonが強調表示されている状態からCAGradientLayerを削除するには

コードは次のとおりです。

CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
gradientLayer.frame = self.myButton.layer.bounds; 
gradientLayer.colors = [NSArray arrayWithObjects: (id)[[UIColor whiteColor] colorWithAlphaComponent:0.5].CGColor,(id) colorTwo.CGColor,(id) colorThree.CGColor,(id) colorFour.CGColor, nil]; 
gradientLayer.locations = [NSArray arrayWithObjects: [NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:1.0f], nil]; 
self.myButton.layer.cornerRadius = 5; 
gradientLayer.cornerRadius = self.myButton.layer.cornerRadius; 
[self.myButton.layer addSublayer:gradientLayer]; 

今私のボタンが強調表示されたとき(touchedDownメソッドが呼ばれる)、私は、myButtonという新しいグラデーションを設定します。したがって、myButtonをクリックして新しいグラデーションを追加するときに、古いグラデーションエフェクトを削除する必要があります。

古いグラデーションエフェクトを削除するにはどうすればよいですか?

私は

for (CALayer *layer in [self.loginScreenView.btnPowerBroking.layer.sublayers copy]){ 
     if ([[layer name] isEqualToString:@"gradientLayer"]) { 
      NSLog(@"Gradient layer found."); 
     } 
    } 

を試みたが、私はそれは、勾配層だ得ることができません。

お時間をいただきありがとうございます。 (:。あなたはそれを設定し、それが動作しますあなたのgradientLayerオブジェクトにnameプロパティを設定していないループのif statementために

gradientLayer.name = @"gradientLayer"; 
[self.myButton.layer addSublayer:gradientLayer]; 

+0

おかげで、この方法を試してみてください。私は質問でこれらの小さな事に気付かなかった。私は次の質問をしながらこれらを覚えています。 (: – Ganesh

答えて

1

注この[layer removeFromSuperlayer];

を使用してレイヤーを削除します。myButtonオブジェクトのレイヤーをbtnPowerBroking内の検索に追加している場合は、Layerを追加したボタンを検索する必要があります。

0

...編集用

[self.myButton.layer replaceSublayer:oldgradientLayer with:newgradientLayer]; 
関連する問題