gpt4 book ai didi

SwiftUI 禁用 View 的自动旋转

转载 作者:行者123 更新时间:2023-12-03 19:21:50 26 4
gpt4 key购买 nike

我有一个应该支持横向和纵向的 SwiftUI 应用程序。但是我想要 iOS 中 Camera.app 的行为。当设备旋转时,只有按钮在切换横向/纵向时旋转,所有其他内容都保持原样。

所以我想禁用某些 View 的自动旋转并为某些 View 启用旋转。不知道如何实现它。

struct ContentView: View {
var view: some View {
HStack {
Text("Hello") // Don't rotate
Text("World") // Rotate
}
}
}

最佳答案

理论上我试过HERE_1HERE_2在旋转设备时检测旋转并旋转“Hello”文本。

我已经尝试过使用 link_2 并更改了一些代码,如下所示:

场景委托(delegate) :

func windowScene(_ windowScene: UIWindowScene, didUpdate previousCoordinateSpace: UICoordinateSpace, interfaceOrientation previousInterfaceOrientation: UIInterfaceOrientation, traitCollection previousTraitCollection: UITraitCollection) {
switch windowScene.interfaceOrientation {
case .landscapeLeft:
model.angel = 90
case .landscapeRight:
model.angel = -90
case .portraitUpsideDown:
model.angel = 180
default:
model.angel = 0
}
}

型号 :
class Model: ObservableObject {
let objectWillChange = ObservableObjectPublisher()

var angel: Double = 0 { willSet { objectWillChange.send() } }
}

内容查看 :
struct ContentView: View {
@EnvironmentObject var model: Model

var body: some View {
HStack {
Text("Hello")
.rotationEffect(Angle(degrees: model.angel))
Text("World")
}
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

希望这有帮助!

关于SwiftUI 禁用 View 的自动旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59140440/

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