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下载地址