2016-09-28 32 views
0

我爲我的按鈕添加了漸變效果,並將其作爲子圖層添加到我的Button如何從UIButton突出顯示時刪除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."); 
     } 
    } 

但我無法得到它的梯度層。

謝謝你的時間。 (:

+0

感謝您的編輯。我忘了注意問題中的這些小問題。在詢問下一個問題時,我會記住這些。 (: – Ganesh

回答

1

您還沒有了name屬性設置爲您gradientLayer對象設置它,它會工作

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

for循環的if statement在使用本[layer removeFromSuperlayer];

注意去除層:您正在myButton對象中添加圖層正確檢查對象,您還需要在按鈕中搜索您已添加的位置Layer

0

嘗試此方法...

[self.myButton.layer replaceSublayer:oldgradientLayer with:newgradientLayer];