2015-09-24 4 views
1

Я хотел бы иметь UIView (или, если необходимо, UIViewController), который можно «перетащить»/щелкнуть/вывести из экрана - но заблокирован на вертикальной оси (так что вид будет идти вверх или вниз с экрана, чтобы показать вид ниже). Это похоже на веб-представления приложения Facebook.Прокрутите UIView с экрана

Возможно, это может быть достигнуто с помощью UIGravityBehavior?

Любые идеи были бы фантастическими.

ответ

1

Я сделал что-то подобное некоторое время назад, используя UIPanGestureRecognizer. Вот как это будет работать:

float slidingMenuOffsetSum; 

    - (void)handleSlidingMenuPan:(UIPanGestureRecognizer *)gestureRecognizer { 
     CGPoint translation = [gestureRecognizer translationInView:_slidingMenuView]; 

     slidingMenuOffsetSum += translation.y; 
     CGPoint newSlidingMenuCenter = CGPointMake(_slidingMenuView.center.x, _slidingMenuView.center.y + translation.y); 

     if (_slidingMenuView.frame.origin.y <= 512 && _slidingMenuView.frame.origin.y >= 0) { 
      _slidingMenuView.center = newSlidingMenuCenter; 
     } 

     [gestureRecognizer setTranslation:CGPointZero inView:_slidingMenuView]; 

     if (gestureRecognizer.state == UIGestureRecognizerStateEnded) { 
      [UIView animateWithDuration:0.3 
       animations:^{ 
        [_slidingMenuView setUserInteractionEnabled:false]; 
        if (slidingMenuOffsetSum > 0) { 
         if (slidingMenuOffsetSum > _slidingMenuView.frame.size.height/4) { 
          [self setSlidingMenuHidden:false]; 
         } else { 
          [self returnSlidingMenuToPosition]; 
         } 
        } else { 
         if (slidingMenuOffsetSum < -_slidingMenuView.frame.size.height/4) { 
          [self setSlidingMenuHidden:true]; 
         } else { 
          [self returnSlidingMenuToPosition]; 
         } 
        } 
       } 
       completion:^(BOOL finished) { 
        slidingMenuOffsetSum = 0; 
        [_slidingMenuView setUserInteractionEnabled:true]; 
       }]; 
     } 
    } 

Вы можете настроить значения, при котором скольжение меню может двигаться, и пороговые значения для обнаружения, если вид должен вернуться в исходное положение, или, например. выйдите из экрана.

Смежные вопросы