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]];

 

posted @ 2013-04-22 23:04  欧阳蓝缺  阅读(433)  评论(0编辑  收藏  举报