TIL

[XCode, Objective C] View에 shadow, Corner Radii 동시에 적용

유이 YUI 2024. 9. 6. 11:12

똑같은 뷰에 shadow, corner radii (특정한 부분에만 cornerRadius를 적용할 때 사용)을 적용하려고 하면 shadow만 적용되는 깜찍한 상황이 발생함

    // cardView에 shadow 적용
    self.cardView.layer.shadowColor = [[UIColor colorWithRed:0 green:0 blue:0 alpha:0.1] CGColor];
    self.cardView.layer.shadowOpacity = 1.0;
    self.cardView.layer.shadowOffset = CGSizeMake(0, -2);
    self.cardView.layer.shadowRadius = 8;

    [self.cardView layoutIfNeeded];

    // Card ContentView에 cornerRadii 적용
    UIRectCorner corners = UIRectCornerTopLeft | UIRectCornerTopRight;
    CGFloat cornerRadius = 12.0;

    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.cardContentView.bounds
                                               byRoundingCorners:corners
                                                     cornerRadii:CGSizeMake(cornerRadius, cornerRadius)];
    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.path = path.CGPath;
    self.cardContentView.layer.mask = maskLayer;

1. cardView, cardContentView는 storyboard로 생성 후 IBOutlet으로 h파일에 연결해 둔 상태

 

2. cardView -> 최상위 뷰 / backgroundColor: clearColor (투명)

 

3. cardContentView -> cardView 내부에 존재하는 View, constraints는 cardView기준으로 0,0,0,0 (top, right, left, bottom)

-> cardContentView에 배경 색상 적용

 

4. 나는 viewDidLayoutSubviews 에서 shadows, cornerRadii를 적용함! didLoad에서 하면 적용 안 됨!

 

 

objc 너무 정보가 없어서 눈물만 난다

 

 


 

 

브이하는 사진

오늘도 잘 해냈다!