如果是在VC中操作,需要在viewDidLayoutSubviews方法里
- (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; CGFloat radius = 36; // 圓角大小 UIRectCorner corner = UIRectCornerBottomLeft | UIRectCornerBottomRight; UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:self.backImageV.bounds byRoundingCorners:corner cornerRadii:CGSizeMake(radius, radius)]; CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; maskLayer.frame = self.backImageV.bounds; maskLayer.path = path.CGPath; self.backImageV.layer.mask = maskLayer; }
或者在其他地方,給一個延時:
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // // CGFloat radius = 36; // 圓角大小 // UIRectCorner corner = UIRectCornerBottomLeft | UIRectCornerBottomRight; // UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:self.backImageV.bounds byRoundingCorners:corner cornerRadii:CGSizeMake(radius, radius)]; // CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; // maskLayer.frame = self.backImageV.bounds; // maskLayer.path = path.CGPath; // self.backImageV.layer.mask = maskLayer; // // // });
如果是對同一UILayer 操作,既切圓角又設置陰影。多加一層UIView, 一層設置圓角,一層設置陰影。
//===========\
// TODO:圓角與陰影不能共存問題?
// 在subview上面設置圓角,把subview的masksToBounds屬性設置為true
// 在parent view上面設置陰影,把parent view的masksToBounds屬性設置為false,並設置parent view的cornerRadius和subview一樣,就可以了。
// ————————————————
// 版權聲明:本文為CSDN博主「feosun」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
// 原文鏈接:https://blog.csdn.net/feosun/article/details/86657330
