SwiftUI:ScrollView 中的 3DEffect 问题
SwiftUI: Problem with 3DEffect in a ScrollView
在我的 Projekt 中,我有一个带有一些元素的 ScrollView。当我滚动时,元素应该执行 3DEffect。一切正常,但元素(VStack)的边缘被切断了。
有人知道这个问题吗?
这是我的 ContentView() 代码:
var body: some View {
NavigationView{
ZStack {
VStack{
ScrollView(showsIndicators: false){
VStack(spacing: 30) {
ForEach(0..<4){ item in
GeometryReader { geometry in
Elemente(minY: geometry.frame(in: .global).minY, title: self.möglicheZeiten[item < self.möglicheZeiten.count ? item : 0], einstellungsFeld: item )
}
.frame(maxWidth: .infinity)
.frame(width: 350, height: 200)
}
}
}
NavigationLink(destination: TrainingView()){
Text("Start")
}
.styleButton()
}
.navigationBarTitle("Workout", displayMode: .automatic)
}
}
}
这里是 Element() 的代码:
var body: some View{
var minY: CGFloat
...
VStack {
VStack(spacing: 20){
Text("\(title)")
.bold()
if einstellungsFeld != 3{
Zeiten(minuten: daten.berechneMinuten(minuten: Int(wert)), sekunden: daten.berechnenSekunden(sekunden: Int(wert)))
}else{
Text("Durchgänge: \(Int(daten.durchgaenge))")
}
Slider(value: $daten.insgesamt)
}
.styleSettingsBox()
.rotation3DEffect(Angle(degrees: Double(minY/10)), axis: (x: 10, y: 0, z: 0.0))
.scaleEffect(minY < 1.00 ? minY / 1000 + 1 : 1.00, anchor: .bottom)
}
}
提前致谢,对不起我的英语:)
我通过给 ScrollView 中的 Vstack 一个 .frame(maxHeight: .infinity) 来解决它。
在我的 Projekt 中,我有一个带有一些元素的 ScrollView。当我滚动时,元素应该执行 3DEffect。一切正常,但元素(VStack)的边缘被切断了。
有人知道这个问题吗?
这是我的 ContentView() 代码:
var body: some View {
NavigationView{
ZStack {
VStack{
ScrollView(showsIndicators: false){
VStack(spacing: 30) {
ForEach(0..<4){ item in
GeometryReader { geometry in
Elemente(minY: geometry.frame(in: .global).minY, title: self.möglicheZeiten[item < self.möglicheZeiten.count ? item : 0], einstellungsFeld: item )
}
.frame(maxWidth: .infinity)
.frame(width: 350, height: 200)
}
}
}
NavigationLink(destination: TrainingView()){
Text("Start")
}
.styleButton()
}
.navigationBarTitle("Workout", displayMode: .automatic)
}
}
}
这里是 Element() 的代码:
var body: some View{
var minY: CGFloat
...
VStack {
VStack(spacing: 20){
Text("\(title)")
.bold()
if einstellungsFeld != 3{
Zeiten(minuten: daten.berechneMinuten(minuten: Int(wert)), sekunden: daten.berechnenSekunden(sekunden: Int(wert)))
}else{
Text("Durchgänge: \(Int(daten.durchgaenge))")
}
Slider(value: $daten.insgesamt)
}
.styleSettingsBox()
.rotation3DEffect(Angle(degrees: Double(minY/10)), axis: (x: 10, y: 0, z: 0.0))
.scaleEffect(minY < 1.00 ? minY / 1000 + 1 : 1.00, anchor: .bottom)
}
}
提前致谢,对不起我的英语:)
我通过给 ScrollView 中的 Vstack 一个 .frame(maxHeight: .infinity) 来解决它。