UIView
tiene un método llamado transition(from:to:duration:options:completion:)
que tiene la siguiente declaración:
class func transition(from fromView: UIView, to toView: UIView, duration: TimeInterval, options: UIViewAnimationOptions = [], completion: ((Bool) -> Void)? = nil)
Crea una animación de transición entre las vistas especificadas utilizando los parámetros dados.
Entre los muchos UIViewAnimationOptions
parámetros que se pueden pasar a transition(from:to:duration:options:completion:)
es transitionCrossDissolve
.
transitionCrossDissolve
tiene la siguiente declaración:
static var transitionCrossDissolve: UIViewAnimationOptions { get }
Una transición que se disuelve de una vista a la siguiente.
La siguiente Swift código 3 Zona de juegos muestra cómo para alternar entre dos UIViews
con una cruz disolver transición mediante el uso de transition(from:to:duration:options:completion:)
y transitionCrossDissolve
:
import UIKit
import PlaygroundSupport
class ViewController: UIViewController {
let firstView: UIView = {
let view = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
view.backgroundColor = .red
return view
}()
let secondView: UIView = {
let view = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
view.backgroundColor = .blue
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
view.addSubview(firstView)
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(toggle(_:)))
view.addGestureRecognizer(tapGesture)
}
func toggle(_ sender: UITapGestureRecognizer) {
let presentedView = view.subviews.first === firstView ? firstView : secondView
let presentingView = view.subviews.first !== firstView ? firstView : secondView
UIView.transition(from: presentedView, to: presentingView, duration: 1, options: [.transitionCrossDissolve], completion: nil)
}
}
let controller = ViewController()
PlaygroundPage.current.liveView = controller
Creo que es mejor no utilizar estos métodos. Los bloques son mucho más elegantes. Como dice la documentación de Apple: Se desaconseja el uso de este método en iOS 4.0 y posterior. – Gabriel
¿Por qué? ¿Qué son bloques? – Dmitry
programación basada en bloques. Vea la respuesta de @Ashley Mills. – Gabriel