2013-02-03 32 views
8

Tôi đang che một số CAGradientLayer với một số CAShapeLayer để tạo dấu trang nằm bên trong các hàng nhất định trong bảng của tôi.Thêm bóng xung quanh vùng bị che khuất của một CALayer

enter image description here

 CGMutablePathRef path = CGPathCreateMutable(); 
     CGPathAddLines(path, 
         NULL, 
         (CGPoint[]){ 
          CGPointMake(8, 0), 
          CGPointMake(22, 0), 
          CGPointMake(22, 22), 
          CGPointMake(15, 16), 
          CGPointMake(8, 22) 
         }, 
         5); 
     CGPathCloseSubpath(path); 

     CAShapeLayer *mask = [CAShapeLayer layer]; 
     mask.fillColor = [UIColor redColor].CGColor; 
     mask.bounds = CGRectMake(0, 0, 30, 30); 
     mask.path = path; 
     mask.anchorPoint = CGPointMake(0, 0); 

     CGPathRelease(path); 

     CAGradientLayer *favoriteBadge = [CAGradientLayer layer]; 
     favoriteBadge.colors = 
      @[(id)[UIColor colorWithRed:.97f green:0.5f blue:0.1f alpha:1.f].CGColor, // orange 
       (id)[UIColor colorWithRed:1.f green:.8f blue:0.f alpha:1.f].CGColor]; // yellow 
     favoriteBadge.locations = @[@0.0, @1.0]; 
     favoriteBadge.bounds = CGRectMake(0, 0, 30, 30); 
     favoriteBadge.anchorPoint = CGPointMake(1, 0); 
     favoriteBadge.position = CGPointMake(self.bounds.size.width, 0); 
     favoriteBadge.mask = mask; 
     // FIXME: This shadow is not being applied 
     favoriteBadge.shadowColor = [UIColor colorWithRed:.97f green:0.5f blue:0.1f alpha:1.f].CGColor; 
     favoriteBadge.shadowOpacity = 1.f; 

này có vẻ quá bằng phẳng, vì vậy tôi muốn kết thúc chuyện này ra với một cái bóng xung quanh hình dạng của chính nó. Tôi đã thử bật bóng trên lớp, nhưng nó dường như không được áp dụng. Tôi cho rằng nó đang được áp dụng trong khu vực không có trong hình dạng. Làm cách nào tôi có thể thêm bóng vào chính hình dạng đó?

Tôi có thể sao chép lớp, làm tối và bù đắp vị trí của nó một vài pixel, nhưng điều đó cảm thấy lãng phí khi CoreAnimation có thể làm điều đó hiệu quả hơn cho tôi.

+0

+1 độc đáo hỏi + id muốn biết quá: DI luôn di chuyển hình ảnh và vẽ những thứ bản thân mình .. –

Trả lời

-2

Có lẽ điều duy nhất bạn bỏ lỡ là

favoriteBadge.masksToBounds = NO 
Các vấn đề liên quan