目标:
1-显示覆盖整个屏幕的视图(蓝色) 2-当点击底部(右上角)时,它将显示一个HStack动画,在右侧显示HStack(绿色)“幻灯片偏移动画”。
import SwiftUI
struct ContentView: View {
@State var showgreen = false
var body: some View {
NavigationView {
HStack {
Rectangle()
.foregroundColor(.blue)
if showgreen {
Rectangle()
.foregroundColor(.green)
.offset(x: showgreen ? 0 : UIScreen.main.bounds.width)
.animation(.easeInOut)
}
}
.navigationBarItems(trailing:
Button(action: { self.showgreen.toggle() }) {
Image(systemName: "ellipsis")
})
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.colorScheme(.dark)
.previewDevice("iPad Pro (12.9-inch) (3rd generation)")
}
}
该代码有效,但是我无法使绿色的“幻灯片偏移动画”起作用。非常感谢任何帮助! :)
答案 0 :(得分:2)
您需要使用绿色矩形而不是使用if
条件,而不是使用条件。切换showgreen
时,您需要缩小蓝色矩形的大小,这将为绿色矩形腾出空间。
struct ContentView: View {
@State var showgreen = false
var body: some View {
NavigationView {
HStack {
Rectangle()
.foregroundColor(.blue)
.frame(width: showgreen ? UIScreen.main.bounds.width / 2 : UIScreen.main.bounds.width)
.animation(.easeInOut)
Rectangle()
.foregroundColor(.green)
.animation(.easeInOut)
}
.navigationBarItems(trailing:
Button(action: { self.showgreen.toggle() }) {
Image(systemName: "ellipsis")
})
}
.navigationViewStyle(StackNavigationViewStyle())
}
}