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() }