iOS UIView新增鋸齒和波浪線的邊
阿新 • • 發佈:2019-01-10
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下載地址