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