다음 질문에 대해서는 아래 이미지를 참조하십시오. 보이는 파란색과 주황색 원은 UIView입니다. UIPanGestureRecognizer가있는 청색 UIView를 드래그하여 주황색 원을 그에 따라 변환하고 지금처럼 파란색 원에서 같은 거리를 유지하고 싶습니다. 의미, 파란색 원을 아래로 드래그하면 주황색 UIView는 파란색 원과 평행을 유지해야하며 아래로 번역해야합니다. 파란색 원을 오른쪽으로 끌면 주황색 원도 오른쪽으로 변환되어야하고 은 파란색 원에서 동일한 거리를 유지해야합니다.다른 UIView를 드래그하여 UIView 번역
그래서 지금 원은 그들에 UIPanGestureRecognizer이 같은 클래스의 일부이다. 다음은 이러한 뷰를 드래그하는 코드입니다 :
self.delta = [p translationInView:newView.superview];
-(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];
}
가, 내가 사용하여 지정된 뷰의 좌표 시스템에서 팬 제스처의 번역을 얻을 수 있어요
이것이 제가 오렌지색 원의 번역을 신청하는 데 필요한 델타라고 생각합니다.하지만 어떻게 할 것인지는 잘 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다. 고맙습니다!
'델타'를 다른보기 센터에도 추가 할 수 없습니까? –
따라서 두보기는 다른 UIView (자주색 배경으로 표시됨)의 하위보기로 추가됩니다. 그 superview에서'drawRect :'내에서 다음과 같이 델타를 다른 뷰의 중심에 추가하려고했습니다 : 'self.fp2.center = CGPointMake (self.fp2.center.x + self.deltaDrag.x, self. fp2.center.y + self.deltaDrag.y); 이렇게하면 파란색보기의 첫 번째 끌기에서 주황색보기가 창 밖으로 날아갑니다. – DanielRak
주황색보기 또는 현재 중심의 원래 중심점에 델타를 추가합니까? 델타는 시간이 지남에 따른 총 변환입니다. –