#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)];
}