ich einen View-Controller haben, die wie folgt aussieht:falsche Rahmengröße, wenn Viewcontroller Instanziieren 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)
}
}
Wenn ich die View-Controller über let spotViewController = SpotViewController(spot: spot)
instanziiert und auf die Navigationssteuerung drücken ist der resultierende Rahmen falsch in beide viewDidLoad
und viewWillAppear
. Es gibt mir (0.0, 0.0, 600.0, 600.0)
, die die Größe in der Schnittstelle Builder ist.
Warum passiert das und was ist der richtige Weg, um einen View-Controller mit einem xib zu instanziieren, um sicherzustellen, dass der Frame korrekt ist?
Wie zeigen Sie den Controller (Ansicht)? – Wain
@Wain Ich schiebe es einfach auf den 'navigationController' Stack mit' navigationController! .pushViewController (spotViewController, animiert: true) ' –
Was ist der Frame in viewDidLayoutSubviews()? –