2010-05-12 6 views
1

Я использую метод, описанный в How do I draw a shadow under a UIView?, чтобы нарисовать тень за контентом. Тень привязана к границам представления, хотя я отключил «Подвижные клипы» в Interface Builder для представления. Можно ли нарисовать тень около вид, а не только в вид?Как рисовать тень за пределами UIView?

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

ответ

0

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

с уважением,

+3

Почему не рекомендуется рисовать вид снаружи границ? В случае теней, в частности, какие-либо причины? –

+0

вызывает проблемы с производительностью из-за смешивания цветов между двумя слоями, фонового слоя и теневого слоя, интенсивность процессора. https://stackoverflow.com/a/36794256/1348121 –

2

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

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

6

Вместо ручного рисования в DrawRect, рассмотреть настройки свойств на уровне ядра анимации в 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> 
Смежные вопросы