У меня есть немного сложная вещь, которую я пытаюсь построить.iOS рисовать пунктирную линию от центра одного взгляда к другому центру зрения, оживляя второй вид, используя CGAffineTransformMakeTranslationg
В принципе, я получил этот сценарий здесь:
Я могу нарисовать пунктирную линию благодаря этому StackOverflow ответ:
Draw dotted (not dashed!) line, with IBDesignable in 2017
линия рисунок пунктирная делается внутри:
-(void)drawRect:(CGRect)rect
{
[self drawDottedLineFromStartingPoint:self.mainPhoto.center ToEndPoint:self.photo1.center];
[self drawDottedLineFromStartingPoint:self.mainPhoto.center ToEndPoint:self.photo2.center];
[self drawDottedLineFromStartingPoint:self.mainPhoto.center ToEndPoint:self.photo3.center];
[self drawDottedLineFromStartingPoint:self.mainPhoto.center ToEndPoint:self.photo4.center];
[self drawDottedLineFromStartingPoint:self.mainPhoto.center ToEndPoint:self.photo5.center];
}
-(void)drawDottedLineFromStartingPoint:(CGPoint)startPoint ToEndPoint:(CGPoint)endPoint
{
UIBezierPath *path = [[UIBezierPath alloc] init];
[path moveToPoint:startPoint];
[path addLineToPoint:endPoint];
path.lineWidth = 4;
CGFloat dashes[] = {path.lineWidth * 0, path.lineWidth * 2};
[path setLineDash:dashes count:2 phase:0];
path.lineCapStyle = kCGLineCapRound;
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(ctx, [ThemeManager mediumTextColor].CGColor);
[path stroke];
}
Проблема, с которой я сталкиваюсь, заключается в том, что каждый маленький кружок оживляется, падая на место.
Путь, я оживляющий меньший круг является использование что-то вроде:
CGAffineTransformMakeTranslation(0, 50);
Когда я делаю это, пунктирные линии черпается из большого круга в конечное положение покоя меньшего круга, пунктирные линии не «следуют» по меньшему кругу, так как он анимируется и падает.
Так что вы видите, это:
Есть ли простое решение, что я пытаюсь достичь? Я пробовал думать об использовании NSTimer и вычислять длину гипотенузы, делить на длительность, но я не очень далеко: D
Спасибо, что указал мне в правильном направлении. Я решил это по-своему, используя NSTimer и перерисуя свой экран: D Я действительно модифицировал метод drawRect, чтобы указать на начало представления Layer frame + circle width/2.0, чтобы получить фактическое происхождение. – Zhang