Ho un controller della vista che assomiglia:telaio corretto quando un'istanza ViewController w/xib
class SpotViewController: UIViewController {
let spot: Spot
init(spot: Spot) {
self.spot = spot
super.init(nibName: "SpotViewController", bundle: nil)
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
print("viewWillAppear: \(view.frame)") # => (0.0, 0.0, 600.0, 600.0)
}
override func viewDidLoad() {
super.viewDidLoad()
print("viewDidLoad: \(view.frame)") # => (0.0, 0.0, 600.0, 600.0)
}
}
Quando istanziata controller della vista tramite let spotViewController = SpotViewController(spot: spot)
e spingerlo sul controller di navigazione il frame risultante è corretto in entrambi viewDidLoad
e viewWillAppear
. Mi dà (0.0, 0.0, 600.0, 600.0)
che è la dimensione nel generatore di interfaccia.
Perché sta succedendo questo e qual è il modo corretto di istanziare un controller di visualizzazione w/a xib per garantire che il frame sia corretto?
Come stai mostrando il controller (vista)? – Wain
@Wain Lo sto semplicemente spingendo sullo stack 'navigationController' con' navigationController! .pushViewController (spotViewController, animato: true) ' –
Qual è il frame in viewDidLayoutSubviews()? –