2012-10-17 14 views
19

Utworzyłem uiview na moim Xibie z kolorem tła jako jasny kolor. Po nałożeniu cienia na warstwę widoku cień nie pojawia się. Ale gdy ustawiam inny kolor tła niż jasny, pojawi się cień. Proszę pomóż.Cień nie wyświetla się, gdy kolor tła jest wyraźny.

to jest mój kod

self.cView.layer.shadowColor=[UIColor whiteColor].CGColor; 
self.cView.layer.shadowOffset=CGSizeZero; 
self.cView.layer.shadowRadius=30.0; 
self.cView.layer.shadowOpacity=1.0; 
self.cView.layer.cornerRadius=10.0; 

Odpowiedz

22

Problem polega na tym, że cień faktycznie bierze pod uwagę warstwę "górną". Jeśli nie ma nic na nim nie będzie cień: How Shadows Work

EDIT:

Jest to przepis copied from paste bin

view.layer.shadowColor = [UIColor colorWithWhite:.5 alpha:1].CGColor; 
view.layer.shadowRadius = 4.0f; 
view.layer.shadowPath = CGPathCreateWithRect(CGRectMake(0, 0, 50, 50), NULL); 
view.layer.shadowOpacity = 1.0f; 
view.layer.shadowOffset = CGSizeMake(1, 1); 

Ale wątpię, to będzie w jakikolwiek sposób użyteczne dla ciebie: wynik jest widok "pomalowany" kolorem cienia i cieniem wokół niego.

+1

Tak, cienie występują tylko wtedy, gdy widok jest nieprzejrzysty lub zawiera pewną zawartość. Ustawienie przezroczystego koloru przypomina ustawienie przezroczystości widoku. – Mukunda

+0

Wadą jest, UIView.animate nie działa z shadowPath. –

1

Nie można zapomnieć, aby ustawić self.cView.clipToBounds do NO?

+0

Nie, po prostu gram z tym problemem i mogę to potwierdzić. –

+0

Nie działa – Mukunda

+0

Co zrobić, jeśli kolor tła nie jest zbyt przezroczysty, ale 1% nieprzejrzysty? Czy pokazuje się niewyraźny cień? Czy cień pokazuje połowę przejrzystości, jeśli tło jest w 50% nieprzezroczyste? – Cyrille