2012-04-15 3 views

답변

1

뷰의 아래쪽과 오른쪽에 그림자 이미지가 확대 된 두 개의 UIImageViews를 추가하면됩니다. UIImageViews로 모든 뷰를 커버 할 필요는 없습니다. 클립으로 원하는만큼 클립 할 수 있습니다. 아이폰에서 트위터의 색상 블렌드 레이어를 살펴보면 UIImageViews를 사용하여 그 아름다운 그림자를 만들 수 있다고 생각합니다. 그리고 그것은 시스템 자원을 절약합니다. 물론 CALayer를 사용하여 그림자를 만들 수는 있지만 그림자를 렌더링하는 데 더 많은 시스템 리소스를 사용한다고 생각합니다. 따라서 CALayer는 제 2의 선택입니다.

19

당신은

CAGradientLayer *shadow = [CAGradientLayer layer]; 
shadow.frame = CGRectMake(-10, 0, 10, myView.frame.size.height); 
shadow.startPoint = CGPointMake(1.0, 0.5); 
shadow.endPoint = CGPointMake(0, 0.5); 
shadow.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithWhite:0.0 alpha:0.4f] CGColor], (id)[[UIColor clearColor] CGColor], nil]; 
[myView.layer addSublayer:shadow]; 

당신은 당신의 요구에 맞게 frame을 변경해야합니다, CAGradientLayer과 같이 사용할 수 있습니다. 이 예제에서는 왼쪽에 뷰의 높이를 따라 그림자를 표시합니다. 시작 및 끝 지점을 변경하여 그림자의 방향을 제어 할 수도 있습니다.

+1

거기에 목표를 달성하기 위해 CALayer의 shadowOffset 및 shadowRadius를 사용하는 방법이 있습니까? – tom

+0

프레임을 변경하여이 작업을 수행 할 수 있다고 가정합니다. – edc1591

0
UIBezierPath *shadowPath = [UIBezierPath 
bezierPathWithRect:self.yourViewObj.bounds]; 
self.yourViewObj.layer.masksToBounds = NO; 
self.yourViewObj.layer.shadowColor = [UIColor blackColor].CGColor;//*** color you want for shadow 
self.yourViewObj.layer.shadowOffset = CGSizeMake(5.0f, 5.0f); 
self.yourViewObj.layer.shadowOpacity = 0.7f; 
self.yourViewObj.layer.shadowPath = shadowPath.CGPath; 
관련 문제