Как я могу создать волновую границу пользовательского интерфейса?

#ios #objective-c

#iOS #objective-c

Вопрос:

я хочу сделать границу пользовательского интерфейса похожей на волну, и я просто не могу понять, как это сделать. Я попытался просто нарисовать волновую линию с помощью кода, найденного здесь, но это просто не работает

 CGRect rect = CGRectMake(100, 100, 500, 500);

self.heightCrest = 30;
float w = 0; // starting position
float y = rect.size.height;
float width = rect.size.width;
int cycles = 7;//number of waves
self.x  = width/cycles;
CGContextRef context = UIGraphicsGetCurrentContext();
CGMutablePathRef path = CGPathCreateMutable();
while (w<width) {
    CGPathMoveToPoint(path, NULL, w,y/2);
    CGPathAddQuadCurveToPoint(path, NULL, w self.x/4, y/2 - self.heightCrest, w self.x/2, y/2);
    CGPathAddQuadCurveToPoint(path, NULL, w 3*self.x/4, y/2   self.heightCrest, w self.x, y/2);
    w =self.x;
}
CGContextAddPath(context, path);
CGContextDrawPath(context, kCGPathStroke);
  

Комментарии:

1. Это может помочь ronnqvi.st/thinking-like-a-bzier-path

Ответ №1:

попробуйте так:

 - (void)addHorizontalDownwardCurveToPath:(UIBezierPath *)path toPoint:(CGPoint)point withAmplitude:(CGFloat)amplitude {
    CGFloat middle = (point.x   path.currentPoint.x) / 2;
    [path addQuadCurveToPoint:point
                 controlPoint:CGPointMake(middle, point.y   amplitude)];
}