gpt4 book ai didi

ios - 使用 viewWillTransition 更改方向时 UIView.isHidden 不起作用

转载 作者:行者123 更新时间:2023-11-30 11:41:35 24 4
gpt4 key购买 nike

我试图仅用一个 View 更改方向,其余 View 都固定为纵向。我在 AppDelegate 中设置了一个方法,如下所示

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
if globalVariables.gIsDosageView == "Y" {
if UIDevice.current.orientation == .landscapeLeft || UIDevice.current.orientation == .landscapeRight {
return UIInterfaceOrientationMask.all;
} else {
return UIInterfaceOrientationMask.portrait;
}
} else {
return UIInterfaceOrientationMask.portrait;
}
}

选择剂量 View 时,全局变量 gIsDosageView 设置为“Y”。我创建了两个单独的 View :portraitView (375x812) 和landscapeView (812x375)。我使用 viewWillTransition 方法来捕获方向的每个变化,如下所示

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
if size.width < 400 {
self.userImg.isHidden = false
self.deviceImg.isHidden = false
self.portraitView.isHidden = false
self.landscapeView.isHidden = true
}
else {
self.userImg.isHidden = true
self.deviceImg.isHidden = true
self.portraitView.isHidden = true
self.landscapeView.isHidden = false
}
}

当我从主屏幕转到“剂量”时,它会显示正确的屏幕,并且会在两个方向 View 之间切换,不会出现问题。但是,如果我转到另一个屏幕并返回剂量屏幕,它只会显示两个方向屏幕中首先加载的屏幕。我已经单步执行了代码,它隐藏了正确的屏幕,但这没有反射(reflect)在结果 View 中。如果我首先选择纵向屏幕,它将在纵向和横向之间成功切换,但如果我转到下一个屏幕并返回剂量,它只会显示纵向屏幕,无论方向如何,并且似乎忽略 viewWillTransition() 中的代码.

这是为什么?我错过了什么?

最佳答案

viewWillTransition 仅在设备旋转时调用。当您在打开的 View 之间切换而不旋转时,它不会被调用,因此不会按照您想要的方式设置 View 。尝试将测试放在 viewWillAppear 中。

关于ios - 使用 viewWillTransition 更改方向时 UIView.isHidden 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49238684/

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