2013-05-25 5 views
7

보기에 추가 된 그림자를 제거하는 방법을 모르겠다. 나는 이런 식으로 initWithFrame 내보기에 그림자를 추가 :이보기에서 그림자를 제거 할 iOS보기에서 그림자 추가/제거

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; 

그러나 이것은 완전히보기뿐만 아니라 추가 된 그림자를 숨 깁니다.

보기에서 추가 된 그림자를 검색 한 다음 숨길 수 있습니까? 감사합니다.

+2

이유가 있습니까? 당신은 코드의 중간에'self.layer'를 가리키는 로컬'layer' 변수를 선언합니까? –

+0

성능상의 이유로 UIBezierPath를 사용하여 shadowPath를 선언하는 것이 더 좋을 수도 있습니다. 이 작업을 수행하는 것이 가장 좋습니다. –

답변

17

CALayershadowOpacity 속성을 사용할 수 있습니다.

self.layer.shadowOpacity = 0.0; 

CALayer's shadowOpacity documentation page

를 참조하십시오 그리고 당신의 그림자 사용을 보여주기 위해 :

그래서이 작동합니다

self.layer.shadowOpacity = 1.0; 
+0

고맙습니다. 매우 유용합니다.이 옵션을 고려하지 않았지만 성능에 영향을 미쳐이 속성 대상을 변경 한 다음 확실히 제거하려고합니까? –

6

죄송합니다, 확인되지 않은 올바른 방법을,하지만 당신은 layer shadow의 속성을 변경하려고 시도 했습니까? 예를 들어, 이들 중 하나;

layer.shadowOffset = CGSizeMake(0, 0); 
layer.shadowColor = [[UIColor clearColor] CGColor]; 
layer.cornerRadius = 0.0f; 
layer.shadowRadius = 0.0f; 
layer.shadowOpacity = 0.00f; 
0

숨겨진 만들려고 노력하는 "층"눈에 보이는 측면 당신이에 그림자가있는 개체의 계층 아니에요입니다 .. 레이어에 ... 오히려입니다 만 객체 어쨌든 개념을 혼란스럽게하는 유일한 방법은 위에서 제안한 원래 작업을 취소하는 것입니다. bool을 토글하여 그림자를 없앨 수있는 정의 된 속성이 없습니다.