2014년 5월 12일 월요일

[iOS] CALayer를 이용한 액자 모양 그림자 넣기.


기존의 CALayer를 이용해서, shadow를 설정할 수 있었습니다.
그 방식에 shadowPath를 설정하여서 그림자의 모양을 변형하는 방법을 정리합니다.

참조: NSCookbook - iOS Programming Recipe 10: Adding A Shadow To UIView


ViewController에  UIImageView를 하나 추가하고, 아래와 같이 설정을 합니다.
source code
    CALayer *layer = self.imageView.layer;
    layer.shadowOffset = CGSizeMake(1, 1);
    layer.shadowColor = [[UIColor blackColor] CGColor];
    layer.shadowRadius = 3.0f;
    layer.shadowOpacity = 0.80f;

    CGRect rect = self.imageView.frame;
    CGSize size = rect.size;
    CGFloat offset = 15.0f;
    UIBezierPath *path = [UIBezierPath bezierPath]; //Path를 설정
    [path moveToPoint:CGPointMake(0.0, offset)];
    [path addLineToPoint:CGPointMake(size.width, offset)];
    [path addLineToPoint:CGPointMake(size.width, size.height+offset)];
    [path addCurveToPoint:CGPointMake(0.0, size.height+offset)
            controlPoint1:CGPointMake(size.width-offset,size.height)
            controlPoint2:CGPointMake(offset, size.height)];
    [path closePath];
    layer.shadowPath = [path CGPath];

위의 shadowPath를 bezierPath로 만들어서 넣으면 그 Path를 따라서 그림자가 생기게 됩니다.




[참고]
이미지 URL: http://i.dailymail.co.uk/i/pix/2014/05/04/article-2620040-1D92597400000578-908_306x423.jpg