gpt4 book ai didi

ios - 在风景中呈现模态 VC 时,父 VC 的安全区域发生变化

转载 作者:技术小花猫 更新时间:2023-10-29 10:53:33 24 4
gpt4 key购买 nike

当我呈现仅支持横向方向的 SecondViewController 时,第一个 UIViewController 中的安全区域插入更改为横向安全区域插入。

GIF with described bug

GIF with described bug that touches TabBar and TableView

第一 View Controller :

class ViewController: UIViewController {

@IBAction func showSecondVC(_ sender: Any) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "SecondViewController")

self.present(controller, animated: true, completion: {
print("completed")
})
}

override func viewSafeAreaInsetsDidChange() {
print(view.safeAreaInsets)
super.viewSafeAreaInsetsDidChange()
print(view.safeAreaInsets)
}
}

第二个 View Controller :

class SecondViewController: UIViewController {
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return [.landscape]
}

@IBAction func dismissYourSelff(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
}

控制台输出:

UIEdgeInsets(top: 44.0, left: 0.0, bottom: 34.0, right: 0.0)
UIEdgeInsets(top: 44.0, left: 0.0, bottom: 34.0, right: 0.0)
UIEdgeInsets(top: 0.0, left: 44.0, bottom: 21.0, right: 44.0)
UIEdgeInsets(top: 0.0, left: 44.0, bottom: 21.0, right: 44.0)
completed

最佳答案

这就是我解决约束问题的方法: https://gist.github.com/filletofish/b56600e9e661aa6e49cc0a56a98b37a3

我不得不使用快照来防止 TabBar 和 TableView 的错误布局。

override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) {
var completionToRemoveSnapshot: (() -> ())? = nil

let shouldUseSnapshot = SDiOSVersion.deviceSize() == .Screen5Dot8inch &&
viewControllerToPresent.supportedInterfaceOrientations == .landscape

if shouldUseSnapshot {
if let snapShot = self.view.snapshotView(afterScreenUpdates: true) {
viewController.view.addSubview(snapShot)
completionToRemoveSnapshot = { snapShot.removeFromSuperview() }
}
}

super.present(viewControllerToPresent, animated: flag, completion: {
completionToRemoveSnapshot?()
completion?()
})
}

关于ios - 在风景中呈现模态 VC 时,父 VC 的安全区域发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47223680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com