突出显示时如何从 UIButton 中删除 CAGradientLayer
How to remove CAGradientLayer from UIButton when it's highlighted
我为我的 Button 添加了渐变效果,并将其作为子层添加到我的 Button
。
代码为:
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.");
}
}
但我无法获取它的渐变图层。
感谢您的宝贵时间。 (:
您尚未将 name
属性 设置为您的 gradientLayer
对象,只需设置它即可。
gradientLayer.name = @"gradientLayer";
[self.myButton.layer addSublayer:gradientLayer];
在 for 循环的 if statement
中使用此 [layer removeFromSuperlayer];
删除层
注意: 您正在 myButton
对象中添加层以在 btnPowerBroking
中搜索并正确检查,您需要在按钮中搜索您已添加 Layer
.
试试这个方法...
[self.myButton.layer replaceSublayer:oldgradientLayer with:newgradientLayer];
我为我的 Button 添加了渐变效果,并将其作为子层添加到我的 Button
。
代码为:
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.");
}
}
但我无法获取它的渐变图层。
感谢您的宝贵时间。 (:
您尚未将 name
属性 设置为您的 gradientLayer
对象,只需设置它即可。
gradientLayer.name = @"gradientLayer";
[self.myButton.layer addSublayer:gradientLayer];
在 for 循环的 if statement
中使用此 [layer removeFromSuperlayer];
注意: 您正在 myButton
对象中添加层以在 btnPowerBroking
中搜索并正确检查,您需要在按钮中搜索您已添加 Layer
.
试试这个方法...
[self.myButton.layer replaceSublayer:oldgradientLayer with:newgradientLayer];