Prática 4: Comandos da Sessão

Assista e acompanhe a prática em sala dos exercícios "Comandos da Sessão". Execute as instruções conforme a apresentação.

Exercício 1: Acrescentando um acionado de Comandos semelhante a tela de Bloqueio

1.1. Abra o arquivo o arquivo Main.Storyboard e localize o Session View Controller

1.2. Exclua o botão de opções

1.3. Adicione o Label de Comandos

Adicione um objeto UILabel para o acionado de comandos com o frame (16, 500, 568, 80). Adicione as constraints:

  • Horizontal Center in Container
  • Bottom Space to: Superview - 8
  • Height: 80
  • Equals Width to: Superview - 32

E com as seguintes propriedades:

  • Text: > Deslize para Comandos
  • Font: System Bold 22.0
  • Alignment: Center

1.4. Criar um Outlet para a Constraint de Centralizar Horizontalmente

Criar um outlet com o nome commandsLabelCenterConstraint.

1.5. Crie um Outlet para o Label

Criar um outlet para o Label com o nome commandsLabel.

1.6. Incluir um Gesture Recognizer

Incluir um Gesture recognizer para o Label adicionando a propriedade:

var commandsRecognizer: UIPanGestureRecognizer!

1.7. Incluir o código para configurar o Gesture Recognizer

Atualizar o código do método configureGestureRecognizers conforme abaixo:

func configureGestureRecognizers() {
    // Configura o gesto de Taps para receber contabilizar as repetições com os toques na tela
    self.tapRecognizer = UITapGestureRecognizer(target: self, action: "tapGestureDetected:")
    self.tapRecognizer.numberOfTapsRequired = 1
    self.view.addGestureRecognizer(self.tapRecognizer)

    // Configura o gesto de Swipe da direta para a esquerda para mostrar o Action Sheet de comandos
    self.commandsRecognizer = UIPanGestureRecognizer(target: self, action: "commandsGestureDetected:")
    self.commandsLabel.addGestureRecognizer(self.commandsRecognizer)
    self.commandsLabel.userInteractionEnabled = true
}

1.8. Incluir o Target Method do Gesture Recognizer

Incluir o código abaixo do método tapGestureDetected::

/// Esse método é chamado quando o usuário realiza o gesto de deslize dos extremos da direita para a esquerda da tela
func commandsGestureDetected(gesture: UIPanGestureRecognizer) {
    if gesture.state == .Began || gesture.state == .Changed {
        let translation = gesture.translationInView(gesture.view!)
        self.commandsLabelCenterConstraint.constant = translation.x

        // Show actions if vertical deslocation is greater than 60% of the screen size
        if translation.x / self.view.frame.size.width >= 0.6 {
            presentActions()
        }
    } else {
        self.commandsLabelCenterConstraint.constant = 0
        self.view.setNeedsUpdateConstraints()
        UIView.animateWithDuration(0.5) {
            self.view.layoutIfNeeded()
        }
    }
}

1.9. Remover o Action Method do botão de opções

Remover o código abaixo:

//
// MARK: - Action Methods

@IBAction func optionsTapped(sender: UIButton) {
    presentActions()
}