iOS 指定位置切圓角不生效,圓角和陰影不能共存問題解決辦法


如果是在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM