IOS добавить/удалить тень из представления
Я не понимаю, как удалить тень, добавленную в представление.
Я добавляю к виду в initWithFrame
тень следующим образом:
self.layer.borderWidth = 2;
self.layer.borderColor = [UIColor clearColor].CGColor;
self.backgroundColor = [UIColor greenColor];
[self.layer setCornerRadius:8.0f];
CALayer *layer = self.layer;
layer.shadowOffset = CGSizeMake(2, 2);
layer.shadowColor = [[UIColor blackColor] CGColor];
layer.cornerRadius = 8.0f;
layer.shadowRadius = 3.0f;
layer.shadowOpacity = 0.80f;
layer.shadowPath = [[UIBezierPath bezierPathWithRect:layer.bounds] CGPath];
После выполнения приложения я хочу удалить тень из этого представления. Я пробовал использовать:
layer.hidden = YES;
или
self.layer.hidden = YES;
но это полностью скрывает представление, а не только добавленную тень.
Есть ли способ получить добавленную тень из представления, а затем скрыть ее?
Спасибо!
Ответы
Ответ 1
Я думаю, вы могли бы использовать свойство shadowOpacity
вашего CALayer
.
Итак, это должно работать:
self.layer.shadowOpacity = 0.0;
Смотрите страницу CALayer
shadowOpacity
И чтобы показать использование тени:
self.layer.shadowOpacity = 1.0;
Ответ 2
Извините, не уверен правильно, но попытались ли вы изменить свойства layer shadow
? Например, один из них:
layer.shadowOffset = CGSizeMake(0, 0);
layer.shadowColor = [[UIColor clearColor] CGColor];
layer.cornerRadius = 0.0f;
layer.shadowRadius = 0.0f;
layer.shadowOpacity = 0.00f;
Ответ 3
Swift 4.2
Я использую это в своем коде для ярлыков и панели навигации.
extension UIView {
func shadow(_ height: Int = 5) {
self.layer.masksToBounds = false
self.layer.shadowRadius = 4
self.layer.shadowOpacity = 1
self.layer.shadowColor = UIColor.gray.cgColor
self.layer.shadowOffset = CGSize(width: 0 , height: height)
}
func removeShadow() {
self.layer.shadowOffset = CGSize(width: 0 , height: 0)
self.layer.shadowColor = UIColor.clear.cgColor
self.layer.cornerRadius = 0.0
self.layer.shadowRadius = 0.0
self.layer.shadowOpacity = 0.0
}
}
Ответ 4
"слой", который вы пытаетесь сделать скрытым, - это слой объекта, в котором у вас есть тень к нему, не видимый аспект.. только объекты с слоем... это довольно запутанно, чтобы концептуализировать в любом случае, единственный способ удалить тень - это отменить то, что вы изначально сделали, что было предложено выше, нет определенного свойства, которое вы можете просто переключить на bool и убрать тень.