iOS界面上方的纸飞飞代码(撕掉纸张留下的头)

iOS界面上方的纸飞飞代码(撕掉纸张留下的头)

 

效果实现代码:

- (CAShapeLayer *)tornPaperLayerWithHeight:(CGFloat)height{

    CGFloat width = MAX(CGRectGetWidth([[UIScreen mainScreen] bounds]), CGRectGetHeight([[UIScreen mainScreen] bounds]));

    CGFloat overshoot = 4;

    CGFloat maxY = height-overshoot;

    UIBezierPath *bezierPath = [UIBezierPath bezierPath];

    [bezierPath moveToPoint: CGPointMake(-overshoot, 0)];

    CGFloat x = -overshoot;

    CGFloat y = arc4random_uniform(maxY);

    [bezierPath addLineToPoint: CGPointMake(-overshoot, y)];

    while(x < width+overshoot){

        y = MAX(maxY-3, arc4random_uniform(maxY));

        x += MAX(4.5, arc4random_uniform(12.5));

        [bezierPath addLineToPoint: CGPointMake(x, y)];

    }

    y = arc4random_uniform(maxY);

    [bezierPath addLineToPoint: CGPointMake(width+overshoot, y)];

    [bezierPath addLineToPoint: CGPointMake(width+overshoot, 0)];

    [bezierPath addLineToPoint: CGPointMake(-overshoot, 0)];

    [bezierPath closePath];



    CAShapeLayer *shapeLayer = [CAShapeLayer layer];

    shapeLayer.fillColor = [self.paperBackgroundColor CGColor];

    shapeLayer.shadowColor = [[UIColor blackColor] CGColor];

    shapeLayer.shadowOffset = CGSizeMake(0, 0);

    shapeLayer.shadowOpacity = 0.5;

    shapeLayer.shadowRadius = 1.5;

    shapeLayer.shadowPath = [bezierPath CGPath];

    shapeLayer.path = [bezierPath CGPath];

    return shapeLayer;

}

 

使用代码:

    [self.layer addSublayer:[self tornPaperLayerWithHeight:12]];

    [self.layer addSublayer:[self tornPaperLayerWithHeight:9]];

 

你可能感兴趣的:(ios)