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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值