0

Я адаптировал UIPanGestureRecognizer для использования раскрывающегося списка для отклонения зрения. Я сделал это так, поэтому теперь представление можно перетащить по оси y, и если изменение y больше 100, оно отклоняет представление.Настройка UIView для начала с верхнего левого угла (0,0)

override func viewDidLoad() { 
    super.viewDidLoad() 

    let myPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: "myPanAction:") 
    self.player.view.addGestureRecognizer(myPanGestureRecognizer) 
} 

func myPanAction(recognizer: UIPanGestureRecognizer) { 
    let translation = recognizer.translationInView(self.view) 
     if let myView = recognizer.view { 
      myView.center = CGPoint(x: myView.center.x, y: myView.center.y + translation.y) 
     } 
     recognizer.setTranslation(CGPointZero, inView: self.view) 

     if recognizer.state == UIGestureRecognizerState.Ended { 
      let velocity = recognizer.velocityInView(self.view) 

      if velocity.y > 100 { 
       dismissViewControllerAnimated(true, completion: nil) 
      } else { 
       // Reposition Back     
      } 
     } 
} 

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

Кроме того, мой подход хороший способ сделать это, или это очень примитивный подход?

+0

Пытались установить центр вашей точки зрения в исходное положение? При необходимости вы можете иметь ссылку на исходный центр на вашем контроллере. –

+0

Я относительно новичок в Swift, поэтому я не понял, что делать на самом деле:/То, что я пытаюсь достичь, - это начать просмотр (x, y) из (0,0) - верхний левый угол – senty

+0

Not конечно, если он будет работать, но попробуйте: 'let frame = myView.frame' ' frame.origin = CGPointMake (0, 0) ' ' myView.frame = frame' –

ответ

1

Можете ли вы попробовать добавить на // Reposition Back комментарий следующий код:

let frame = myView.frame // Get the current view frame 
frame.origin = CGPointZero // Change the frame origin to x:0 y:0 
myView.frame = frame // Change the myView frame to frame 
+0

Работает как очарование !! Большое спасибо! Я добавил «animateWithDuration», чтобы сделать его более естественным. Просто для обучения, есть ли способ использования animateWithDuration, в то время как rejectViewController? – senty

+1

Приятно знать, не уверен, что если бы я следил за вашим другим вопросом. Кстати, хотя я работаю над работами с фреймами, я бы предложил проверить ** autolayout ** для просмотра размера и манипуляции с позициями. Вы слышали об этом? Если нет, я бы предложил проверить этот [учебник] (http://www.raywenderlich.com/115440/auto-layout-tutorial-in-ios-9-part-1-getting-started-2), чтобы получить знакомы с концепцией. –

+0

Да, я знаю об автозапуске, но для этого мнения я не создал VC на Storyboard. Большое спасибо за ваше время – senty