Further to previous question我以为我已经破解了,但还没有。我想访问safearealayoutguide
以在选项卡栏控制器内的屏幕中布局子视图。最初,safeareaguide框架在首次加载时与view.frame
相同。我以为诀窍是访问override func viewDidLayoutSubviews()
,但这只能在简单的视图控制器中使用,即不能在标签栏控制器中使用VC。仅当我切换到其他屏幕并返回后,安全指南尺寸才会出现。这不理想。有没有办法立即(或在viewDidLoad
之后立即)更新安全指南的尺寸?
override func viewDidLoad() {
super.viewDidLoad()
setupView()
print(view.frame)
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
print("ViewWillLayout: \(view.safeAreaLayoutGuide.layoutFrame)")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
print("ViewDidAppear \(view.safeAreaLayoutGuide.layoutFrame)")
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("ViewDidLayoutSubviews \(view.safeAreaLayoutGuide.layoutFrame)")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
print("ViewWillAppear \(view.safeAreaLayoutGuide.layoutFrame)")
}
在初始加载时,所有方法均以与view.frame相同的尺寸返回安全指南。
最初:
在tabbarcontroller中选择另一个VC后返回初始VC:
建议。
我正在使用XCode 10,iOS 11.4,无故事板。