2015-12-29 8 views
0

Есть ли способ найти endpoint экрана? Скажем, экран размера (100x100) имеет среднюю точку (50) и начальную точку (0), а конечную точку - как (100,). Я могу жестко кодировать, чтобы получить конечную точку на основе размера экрана устройства, но это будет слишком много работы, основанной на предположениях.Как получить конец CGPoint экрана?

Я делаю обычай UIView анимацией на основе UIBezierPath.

Вот что я пытаюсь сделать:

enter image description here

Как вы можете видеть, что анимация останавливается после того, как он достигнет некоторого point.And я хочу этот пункт будет конец экрана, так это UIView б/у полностью screen. Чтобы быть более ясным, я перетащить UIView в точку А, и это оживляет в точку Б (конечную точку, так что B> A)

Я не знаю, как вычислить B, так что, когда я тащу UIView А, он оживляет до конца экрана (конечная точка экрана).

Вот код, чтобы получить лучшее понимание:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [[event allTouches] anyObject]; 
    CGPoint touchLocation = [touch locationInView:self.dragView]; 

if (touchLocation.x<250) { 

     if (!startBackSlide) { 
      _circleDragView.touchdragPoint=touchLocation.y; 
      _circleDragView.dragToPoint=CGPointMake(touchLocation.x+40, touchLocation.y); 
      [_circleDragView setNeedsDisplay]; 
      _savedPoint=touchLocation; 
     }else{ 

      //move the top and bot points backwards along with slide 
      [self animateCOmpleteBezier:touchLocation]; 

      _circleDragView.touchdragPoint=touchLocation.y; 
      _circleDragView.dragToPoint=CGPointMake(touchLocation.x+54, touchLocation.y); 
      [_circleDragView setNeedsDisplay]; 
      _savedPoint=touchLocation; 

      if (touchLocation.x<20) { 
       startBackSlide=NO; 
       snapped=YES; 
      } 
     } 

    } 

    if (touchLocation.x>=250) { 

     if (snapped) { 
      snapped=NO; 
      //move the top and bottom points to the specified point(In this case the end point) 
     } 

    } 

} 

-(void)animateCOmpleteBezier:(CGPoint) value{ 

    [UIView animateWithDuration:0.01 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ 
     _circleDragView.topWidthPoint=value.x-10; 
     _circleDragView.botWidthPoint=value.x-10; 
     [_circleDragView setNeedsDisplay]; 

    } completion:^(BOOL finished) { 

    }]; 


} 
+0

Не уверен, что именно то, что вы просите , вы хотите просто получить размер экрана устройства? – luk2302

+0

нет, как вы видите в gif, я перетаскиваю точку зрения до точки 100 и поднимаю палец вверх, затем я ожидаю, что анимация переместит представление мимо точки 100, а в конце анимация должна сделать обложку вида весь экран, я имею в виду, что представление нужно перетащить в конец экрана. –

+1

Вы можете попробовать использовать свойство рамки родительского представления. Или подходите к UIWindow. Или используйте ['UIScreen mainScreen'] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScreen_Class/index.html#//apple_ref/occ/clm/UIScreen/mainScreen). –

ответ