2016-07-27 2 views
2

내 응용 프로그램에는 UIView이 있습니다. 사용자가 원래 위치에서 특정 제한된 위치로 뷰를 끌 수있는 기능을 원합니다 ** UIPanGestureRecognizer Class ** 그리고 gestureRecognizer.state == .Changed 조건에서 나는보기의 좌표를 바꾸고있다. 천천히 움직일 때 제한된 위치로보기를 끌 수 있지만, 사용자가보기를 매우 빠르게 위 또는 아래로 드래그하면 화면이 넘어갈 수있다. 한계는 내가 호야 나에게 sugge을주고 마지막 세 때부터이 문제를 해결하기 위해 노력 해왔다UIPanGestureRecognizer를 사용하여보기를 한 위치에서 제한된 위치로 드래그

if(upperLimit > (self.topbaseConstrant.constant * -1)) 

    { 
     self.topbaseConstrant.constant += gestureRecognizer.translationInView(self.view!).y 

    gestureRecognizer.setTranslation(CGPointZero, inView: self.view!) 

    } 

y 위치에 넣어 stion 사전

+0

if 문은 제한 조건의 현재 위치가 제한보다 작은 지 여부를 확인하고 이동이 매우 큰 경우 상한보다 클 수 있습니다. –

답변

1

사용 min 기능에 덕분에 상한

let newPosition = topbaseConstrant.constant + panGestureRecognizer.translationInView(nil).y 
topbaseConstrant.constant = min(upperLimit, newPosition) 

빠르게 드래그 앤 제약 과거 날려 경우, min 기능은 항상 새로운 위치로 그 상위 제약 조건을 반환을 결정합니다.

+0

물론 상황에 대한 더 많은 컨텍스트를 보지 않고 나는 min 함수를 원한다고 가정하고 있습니다. max를 사용하고 싶을 수도 있습니다. – jervine10

+0

답장을 보내 주셔서 감사합니다. 그러나이 솔루션은 작동하지 않습니다. 같은 문제가 있습니다. –

+0

min 또는 max 함수를 적절히 사용하면 한계를 넘을 수있는 방법은 무엇입니까? 제약 조건은 지정한 범위를 벗어나지 않습니다. – jervine10

관련 문제