iOS Core Animation: CALayer bringSublayerToFront?

前端 未结 8 1728
情深已故
情深已故 2020-12-25 12:28

How do I bring a CALayer sublayer to the front of all sublayers, analogous to -[UIView bringSubviewToFront]?

8条回答
  •  庸人自扰
    2020-12-25 13:00

    I don't think such methods exist, but it's easy to roll your own.

    // CALayer+Additions.h
    
    @interface CALayer (Additions)
    - (void)bringSublayerToFront:(CALayer *)layer;
    - (void)sendSublayerToBack:(CALayer *)layer;
    @end
    
    // CALayer+Additions.m
    
    @implementation CALayer (Additions)
    
    - (void)bringSublayerToFront:(CALayer *)layer {
        CALayer *superlayer = self.superlayer;
        [self removeFromSuperlayer];
        [superlayer insertSublayer:gradientLayer atIndex:[self.sublayers count]-1];
    }
    
    - (void)sendSublayerToBack:(CALayer *)layer {
        CALayer *superlayer = self.superlayer;
        [self removeFromSuperlayer];
        [superlayer insertSublayer:gradientLayer atIndex:0];
    }
    

提交回复
热议问题