Ответ 1
Тень на самом деле рисуется ниже UIView. Если вы установите для maskToBounds значение YES, это закроет любой рисунок за пределами рамки UIView. Вот ссылка SO, которая описывает это более подробно.
Это мой код.
listView.layer.masksToBounds = NO;
listView.layer.shadowOffset = CGSizeMake(-3, 3);
listView.layer.shadowColor=[[UIColor blackColor] CGColor];
listView.layer.shadowRadius = 4;
listView.layer.shadowOpacity = 1.0;
[listView.layer setShouldRasterize:YES];
Он работает хорошо с эффектом тени.
При изменении
listView.layer.masksToBounds = YES;
Я не получил эффект тени.
Тень на самом деле рисуется ниже UIView. Если вы установите для maskToBounds значение YES, это закроет любой рисунок за пределами рамки UIView. Вот ссылка SO, которая описывает это более подробно.
Тень рисуется за пределами границ слоя. Вы должны установить listView.layer.masksToBounds = NO
, чтобы увидеть тень
если вы установили listView.layer.masksToBounds = YES
, вы не можете нарисовать что-то вне границы, чтобы вы не могли получить тень
Если вам нужно использовать masksToBounds = YES;
, зайдите в эту сообщение SO. В нем рассказывается, как использовать тени и закругленные углы (в данном конкретном случае), используя два вложенных вида: внешний вид отбрасывает тень и не маскируется до границ, в то время как внутренний вид имеет закругленные углы и маски для границ.