1. 程式人生 > >iOS UIView新增鋸齒和波浪線的邊

iOS UIView新增鋸齒和波浪線的邊

1,ios 為UIView 新增鋸齒邊
主要是算好鋸齒的點在View上的位置,然後進行填充就好了,程式碼如下:

 UIBezierPath *path = [UIBezierPath bezierPath];
            path.lineWidth = borderWidth;
            NSInteger x = 0;
            NSInteger y = (borderPosition == kBorderPositionTop) ? borderWidth : CGRectGetHeight(self.frame) - borderWidth;
            [path moveToPoint:CGPointMake(x, y)];
            NSUInteger verticalDisplacement = self
.jaggedEdgeVerticalVertexDistance ?: DefaultJaggedEdgeVerticalVertexDistance; NSUInteger horizontalDisplacement = self.jaggedEdgeHorizontalVertexDistance ?: DefaultJaggedEdgeHorizontalVertexDistance; verticalDisplacement *= (borderPosition == kBorderPositionTop) ? +1 : -1; BOOL
shouldMoveUp = YES; while (x <= CGRectGetWidth(self.frame)) { x += horizontalDisplacement; if (type == kCurveBorderTypeJagged) { if (shouldMoveUp) { y += verticalDisplacement; } else
{ y -= verticalDisplacement; } [path addLineToPoint:CGPointMake(x, y)]; }else if (type == kCurveBorderTypeCurve){ NSInteger newY = y+verticalDisplacement; if (shouldMoveUp) { newY += verticalDisplacement; } else { newY -= verticalDisplacement; } [path addQuadCurveToPoint:CGPointMake(x, y+verticalDisplacement) controlPoint:CGPointMake(x-horizontalDisplacement/2.0, newY)]; } shouldMoveUp = !shouldMoveUp; } CGFloat offSet = 2 * borderWidth; x = CGRectGetWidth(self.frame) + offSet; y = (borderPosition == kBorderPositionTop) ? -offSet : CGRectGetHeight(self.frame) + offSet; [path addLineToPoint:CGPointMake(x,y)]; x = -offSet; [path addLineToPoint:CGPointMake(x, y)]; [strokeColor setStroke]; [self drawBezierPath:path];

這裡最主要的是要判斷給那條邊新增鋸齒,每條邊點的位置計算會有所不同。
2,ios 為UIView 新增波浪線邊
這個和鋸齒邊的區別是新增點的方式不同和計算點的位置不一樣,

[path addQuadCurveToPoint:CGPointMake(x, y+verticalDisplacement) controlPoint:CGPointMake(x-horizontalDisplacement/2.0, newY)];

多說無益,直接上demodemo下載地址