Как я могу нарисовать тень за пределами UIView? - PullRequest
1 голос
/ 12 мая 2010

Я использую метод, описанный в Как нарисовать тень под UIView? , чтобы нарисовать тень за содержимым представления. Тень обрезается по границам вида, хотя я отключил «Подвиды клипа» в Интерфейсном Разработчике для вида. Можно ли нарисовать тень вокруг вида, а не только в виде?

Я не хочу рисовать тень внутри представления, потому что представление получит события касания для области тени, которая действительно принадлежит фону.

Ответы [ 3 ]

6 голосов
/ 17 января 2011

Вместо того, чтобы рисовать вручную в drawRect, рассмотрите возможность установки свойств слоя Core Animation UIView для рисования тени.

Например:

[descriptionInput setClipsToBounds:NO];
[descriptionInput.layer setShadowColor:[[UIColor blackColor] CGColor]];
[descriptionInput.layer setShadowOpacity:0.8];
[descriptionInput.layer setShadowOffset:CGSizeMake(0.0, 3.0)];

Чтобы это работало, вам нужно включить QuartzCore:

#import <QuartzCore/QuartzCore.h>
2 голосов
/ 12 мая 2010

clipsToBounds управляет только отсечением для дочерних элементов вида, но не для рисования самого этого вида; следовательно, это не решает вашу проблему.

Если вы можете нарисовать свою тень на другом виде и добавить ее как ребенка, она не будет обрезана. Однако я не знаю, насколько это возможно с помощью метода, который вы используете: (

0 голосов
/ 12 мая 2010

Не рекомендуется рисовать границы внешнего вида. Может быть, вы можете включить тень прямо на вашем фоне ...

С уважением,

...