Пожалуйста, обратитесь к изображению ниже для следующего вопроса: Синие и оранжевые круги, которые вы видите, это UIView. Я хотел бы иметь возможность перетащить синий UIView, у которого есть UIPanGestureRecognizer, и соответствующим образом перевести оранжевый круг и оставаться на том же расстоянии от синего круга, что и сейчас. Значение, если я перетаскиваю синий круг вниз, оранжевый UIView должен оставаться параллельным синему кругу и переводить вниз. Если я перетаскиваю синий круг вправо, оранжевый круг должен также перевести вправо, и останется на таком же расстоянии от синего круга, как сейчас.Перевести UIView, перетащив другой UIView
Так прямо сейчас круги являются частью одного и того же класса, которые имеют UIPanGestureRecognizer на них. Вот код, чтобы перетащить эти взгляды:
-(void)dragging:(UIPanGestureRecognizer *)p {
UIView *newView = p.view;
if (p.state == UIGestureRecognizerStateBegan) {
self.origC = newView.center;
}
self.delta = [p translationInView:newView.superview];
CGPoint c = self.origC;
c.x +=self.delta.x;
c.y +=self.delta.y;
newView.center = c;
[self.delegate refreshView];
}
В классе UIPanGestureRecognizer, я могу получить перевод панорамирования жеста в системе заданного представления координат с:
self.delta = [p translationInView:newView.superview];
Я думаю, что это дельта, мне нужно подать заявку на перевод оранжевого круга, но я не уверен, как бы я это сделал? Любая помощь будет оценена по достоинству. Спасибо!
Не можете ли вы просто добавить 'delta' в центр другого представления? –
Таким образом, оба эти представления добавляются как подпункты в другой UIView (обозначается фиолетовым фоном). В этом супервиде, в 'drawRect:', я попытался добавить эту дельта к центру другого представления следующим образом: 'self.fp2.center = CGPointMake (self.fp2.center.x + self.deltaDrag.x, self. fp2.center.y + self.deltaDrag.y); ' Это приводит к тому, что оранжевый вид вылетает из окна при первом перетаскивании синего изображения. – DanielRak
вы добавляете дельту в исходный центр оранжевого или текущего центра? Поскольку дельта - это полный перевод с течением времени. –