2017-12-07 21 views
0

사용자가 화면을 "좌우로 움직이는"위치를 기준으로 0-100의 백분율을 계산하고 싶습니다. 가장 아래쪽에있는 경우 0 %입니다. 가장 높으면 100 %입니다. 불투명도 슬라이딩 기능에이 기능이 필요합니다. 사용자는 슬라이딩을 통해 화면의 불투명도를 변경할 수 있습니다. 가장 아래쪽은 화면을 보이지 않게 설정하고 가장 위쪽은 가장 밝은 100 %로 설정합니다.PanGesture 및 일부 기본 수학

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer{ 
    CGPoint translation = [recognizer translationInView:self.view]; 
    NSLog(@"Translation: %f", translation.x); 
} 

나는 내가 percetange에 translation.x 변환 찾고 있어요 확신하지만, 혼란. 보기를 가정

+0

수직 사용의 경우 'x'가 아닌 'y'를 사용하십시오. – rmaddy

답변

1

전체 화면을 커버, 당신이 찾고있는 비율이

CGPoint location = [recognizer locationInView:self.view]; 
CGFloat percentage = 1.0 - (location.y/self.view.bounds.size.height); 

locationInView

당신과의 bounds에 의해 정의 된 뷰의 좌표계에서 점을 제공합니다 믿고 (0,0). 상단을 100 %로하고, 1에서 뺄셈을 뒤집습니다 (그렇지 않으면 하단에 100 %를 얻습니다).

+0

이것이 올바른지, 화면 상단과 하단 모두에서 1.0 값을 얻음. – noodlez

+0

각각의 경우'translation.y'의 값은 무엇입니까? 'self.view.bounds.size.height'의 값은 무엇입니까? 또한 "bottom"과 "top"에 대해 이야기했기 때문에 "y"를 사용하는 것으로 나타났습니다. 실제로 왼쪽과 오른쪽으로 패닝한다면 (코드에서 "x"에 대한 참조), 대신에 translation.x/self.view.bounds.size.width를 사용해야합니다. – Craig

+0

중간 화면 : 번역 : -100.666656 --- 화면 하단 : 번역 : -2.333344 --- 화면 상단 : 번역 : 2.333344 .. 중간에 .5 (또는 50 %)의 상단이 100이되도록 ID를 입력하십시오. % 또는 (1)과 바닥이 0 % 또는 (0) – noodlez

0

translation:in: 터치의 시작 위치부터 누적 된 움직임을 제공합니다. 보기의 경계를 기준으로 한 터치 위치와 이후로는 location:in:을 대신 사용해야합니다. view.bounds.size.height로 나누어 진이 값은 화면 위쪽으로 0, 아래쪽으로 1로 상대 거리를 줄 것입니다.