gpt4 book ai didi

ios - 禁用按钮时更改或删除我的 CAGradientLayer

转载 作者:行者123 更新时间:2023-11-28 22:02:37 28 4
gpt4 key购买 nike

我使用 CAGradientLayer 作为按钮的背景。

cell.showOnMap.clipsToBounds = YES;
cell.showOnMap.layer.cornerRadius = 10.0f;
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.showOnMap.frame.size.width, cell.showOnMap.frame.size.height)];
CAGradientLayer *gradient2 = [CAGradientLayer layer];
gradient2.frame = view2.bounds;
gradient2.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:0.00 green:0.66 blue:0.71 alpha:1.0] CGColor], (id)[[UIColor colorWithRed:0.18 green:0.27 blue:0.75 alpha:1.0] CGColor], nil];
[cell.showOnMap.layer insertSublayer:gradient2 atIndex:0];
[cell.showOnMap bringSubviewToFront:cell.showOnMap.imageView];

在某些情况下,我的按钮 showOnMap 将被禁用。在这种情况下,我希望 CAGradient 层从 lightGrayColor 更改为 grayColor 或完全删除该层。这是启用/禁用代码。

if(entry.address == nil)
{ [cell.showOnMap setEnabled:NO];
cell.showOnMap.layer.sublayers = nil;
}
else
[cell.showOnMap setEnabled:YES];

到目前为止,我已经尝试将整个渐变代码放在 else 部分,然后将相同的代码放在 if(entry.address == nil) 中,但是灰色作为渐变。这没有用;该按钮始终是初始的蓝色渐变。

我也试过 cell.showOnMap.layer.sublayers = nil; 但这会删除我拥有的文本和按钮图像,只留下带有圆边的背景。

[[cell.showOnMap.layer.sublayers objectAtIndex:0] removeFromSuperlayer]; 没有产生任何变化并且 [[cell.showOnMap.layer.sublayers objectAtIndex:0] removeFromSuperview ]; 导致崩溃

当我的按钮被禁用时,如何引用我的 CAgradient 图层并删除它?

最佳答案

在单元格内创建一个 gradientLayer 属性。然后将您的 gradientLayer 初始化为该属性。然后您可以稍后安全地引用它来修改它或 removeFromSuperlayer

关于ios - 禁用按钮时更改或删除我的 CAGradientLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24769817/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com