SwiftUI禁用视图的自动旋转
我有一个SwiftUI应用程序,它应该支持横向和纵向。但是,我希望看到Camera.app在iOS中的行为。当设备旋转时,切换横向/纵向时,仅按钮旋转,所有其他内容保持原样 所以我想禁用某些视图的自动旋转,并启用某些视图的旋转。不知道如何实现它SwiftUI禁用视图的自动旋转,swiftui,screen-orientation,device-orientation,Swiftui,Screen Orientation,Device Orientation,我有一个SwiftUI应用程序,它应该支持横向和纵向。但是,我希望看到Camera.app在iOS中的行为。当设备旋转时,切换横向/纵向时,仅按钮旋转,所有其他内容保持原样 所以我想禁用某些视图的自动旋转,并启用某些视图的旋转。不知道如何实现它 struct ContentView: View { var view: some View { HStack { Text("Hello") // Don't rotate Text("W
struct ContentView: View {
var view: some View {
HStack {
Text("Hello") // Don't rotate
Text("World") // Rotate
}
}
}
理论上,我试图检测旋转并在旋转设备时旋转“Hello”文本
我已经尝试使用link_2,并更改了一些代码,如下所示:
在场景公使中:
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()
}
}
在模型中:
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()
}
}
在内容视图中:
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()
}
}
希望这有帮助 感谢您的回答,但这也会旋转
文本(“世界”)
。。。我正在寻找一种禁用自动旋转的方法。@PeterWarbo,嗯?作为您的注释代码,我看到您期望的是旋转文本(“世界”)
。我的想法是检测旋转和旋转预期的项目不旋转。新的SwiftUI模板没有委托。