단추의 드래그 경로를 제한하여 원하는 지점에서 화면 중앙으로 끌 수있는 방법은 무엇입니까?대각선 경로로 UIButton 드래그 제한
저는 UIButton의 현재 위치와 중심 좌표를 알고 있습니다. 드래그 이벤트에 대한 현재 x 및 y 수식이 필요합니다.
단추의 드래그 경로를 제한하여 원하는 지점에서 화면 중앙으로 끌 수있는 방법은 무엇입니까?대각선 경로로 UIButton 드래그 제한
저는 UIButton의 현재 위치와 중심 좌표를 알고 있습니다. 드래그 이벤트에 대한 현재 x 및 y 수식이 필요합니다.
이 그것을 수행해야합니다 같은
끌기 이벤트에 조건을 넣습니다. 원하는 지점으로 드래그하면 이동하십시오. 그렇지 않으면 아무 것도하지 않습니다.
if ((oldX - newX) < oldX && (oldY - newY) < oldY) {
updatePosition(newX, newY);
}
당신은 의미합니까. 드래그의 시작 위치를 저장하고 각 이동 이벤트에서 현재 위치를 가져옵니다. 이 함수에 전달하십시오. 버튼의 프레임에 적용 할 수있는 벡터에 응답합니다.
계산의 요지는 드래그 (x 또는 y)의 최소 구성 요소를 선택하고 두 치수 모두에서 동일한 크기의 벡터에 응답하여 크기를 결정하는 것입니다 (두 축의 부호 유지). 이 같은
// answer a vector to apply to an object's frame, constrained to a diagonal
- (CGPoint)constrainToDiagonalFrom:(CGPoint)from to:(CGPoint)to {
CGPoint diff = CGPointMake(to.x-from.x, to.y-from.y);
CGFloat magnitude = MIN(fabs(diff.x), fabs(diff.y)); // this is how large the drag will be
return CGPointMake(copysignf(magnitude, diff.x), copysignf(magnitude, diff.y));
}
전화를 :
이// on touches moved
// we saved startPoint on touches began
// get location from this event's touches
CGPoint diagonal = [self constrainToDiagonalFrom:startPoint to:location];
myButton.frame = CGRectOffset(myButton.frame, diagonal.x, diagonal.y);
당신은 크기 계산 .. 가장 큰 구성 요소, 최소, 평균, 등만큼 결과는 두 차원에서 대칭으로 주변에 속일 수 있습니다.
코드 측면에서 @ 기호가 필요한 지점으로 끌면 무엇이 있습니까? 그것이 내 질문이다. –