我有一个 viewController,我正在使用锚点,我想获得一个按钮的框架。我只想要在视图被推送时的框架,所以我使用isMovingToParentViewController
. 像这样:
if isMovingToParentViewController {
let myButtonFrame = myButton.convert(myButton.bounds, to: self.view)
}
当我在viewWillAppear
代码中添加它以使按钮的框架运行但当我向它添加相同的代码时viewDidLayoutSubviews
它不会运行。
这是为什么?
只是为了清楚,viewDidLayoutSubviews
当我添加一个断点时它确实命中if isMovingToParentViewController
但其中的代码永远不会被命中。
当视图被推送到 isMovingToParentViewController上时,它会被击中,当它弹出时,isMovingToParentViewController不会被击中。
override func viewDidLoad() {
super.viewDidLoad()
// anchors are set here but the frames haven't been set yet
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if isMovingToParentViewController {
// this code runs
let myButtonFrame = myButton.convert(myButton.bounds, to: self.view)
}
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if isMovingToParentViewController {
// this code NEVER runs
let myButtonFrame = myButton.convert(myButton.bounds, to: self.view)
}
}