CALayer shadowColor 不变
CALayer shadowColor not changing
所以我第一次正确设置了 UIView 图层的阴影(它显示得非常好)但是当我尝试更改颜色时(没有别的,只是 layer.shadowColor
)它不会在视图中更新。它仍然显示原始颜色。我已经试过 layer setNeedsDisplay
但没有任何运气。
self.profileIconShadow.layer.cornerRadius = self.profileIcon.frame.size.height / 2;
self.profileIconShadow.layer.shadowColor = [UIColor blackColor].CGColor;
self.profileIconShadow.layer.shadowOpacity = 1.0f;
self.profileIconShadow.layer.shadowRadius = self.profileIcon.frame.size.width * .025;
self.profileIconShadow.layer.shadowOffset = CGSizeZero;
// if ([entry[@"isInactive"] boolValue]) { // Original
if (true) { // Overrode temporarily to test it out
self.profileIconShadow.layer.shadowColor = [UIColor redColor].CGColor;
[self.profileIconShadow.layer setNeedsDisplay];
}
第一次根据需要正确设置阴影。但是后来我尝试更改颜色它仍然保持黑色而不是变成红色。
它应该是这样的。
编辑 #2:我注意到如果我在第一次制作阴影时注释掉黑色,稍后它会变成红色。可以不改shadowColor
多次吗?
我昨晚试了你的代码,我什至在我睡觉前用你的代码制作了一个开关动画..哈哈..
问题:Can I not change shadowColor multiple times?
,当然可以.. ;)
你的层没有更新的唯一潜在原因可能是它没有在主线程中执行,确保试试这个:
if ([entry[@"isInactive"] boolValue])
{ // Original
dispatch_async(dispatch_get_main_queue(), ^{
self.profileIconShadow.layer.shadowColor = [UIColor redColor].CGColor;
[self.profileIconShadow.layer setNeedsDisplay];
}
}
所以我第一次正确设置了 UIView 图层的阴影(它显示得非常好)但是当我尝试更改颜色时(没有别的,只是 layer.shadowColor
)它不会在视图中更新。它仍然显示原始颜色。我已经试过 layer setNeedsDisplay
但没有任何运气。
self.profileIconShadow.layer.cornerRadius = self.profileIcon.frame.size.height / 2;
self.profileIconShadow.layer.shadowColor = [UIColor blackColor].CGColor;
self.profileIconShadow.layer.shadowOpacity = 1.0f;
self.profileIconShadow.layer.shadowRadius = self.profileIcon.frame.size.width * .025;
self.profileIconShadow.layer.shadowOffset = CGSizeZero;
// if ([entry[@"isInactive"] boolValue]) { // Original
if (true) { // Overrode temporarily to test it out
self.profileIconShadow.layer.shadowColor = [UIColor redColor].CGColor;
[self.profileIconShadow.layer setNeedsDisplay];
}
第一次根据需要正确设置阴影。但是后来我尝试更改颜色它仍然保持黑色而不是变成红色。
它应该是这样的。
编辑 #2:我注意到如果我在第一次制作阴影时注释掉黑色,稍后它会变成红色。可以不改shadowColor
多次吗?
我昨晚试了你的代码,我什至在我睡觉前用你的代码制作了一个开关动画..哈哈..
问题:Can I not change shadowColor multiple times?
,当然可以.. ;)
你的层没有更新的唯一潜在原因可能是它没有在主线程中执行,确保试试这个:
if ([entry[@"isInactive"] boolValue])
{ // Original
dispatch_async(dispatch_get_main_queue(), ^{
self.profileIconShadow.layer.shadowColor = [UIColor redColor].CGColor;
[self.profileIconShadow.layer setNeedsDisplay];
}
}