我想创建一个TikTok评论克隆,意思是:
- 背景内容应保持不变
- 工作表应从底部滑动
- 底部应有注解框
- 点击注解框应打开键盘,注解框应向上滑动
运行下面的代码,点击蓝色方块激活评论。你会看到红色背景如何滑动到顶部
import SwiftUI
struct TikTokView: View {
@State var isPresented: Bool = false
var body: some View {
ZStack {
Color.red
VStack {
RoundedRectangle(cornerRadius: 15)
.fill(Color.blue)
.frame(width: 50, height: 50)
.onTapGesture {
isPresented.toggle()
}
}
.ignoresSafeArea(.keyboard)
CommentsSheetView(isPresented: $isPresented)
}
}
}
struct CommentsSheetView: View {
@Binding var isPresented: Bool
@State private var text: String = ""
var transition: AnyTransition = .move(edge: .bottom)
var body: some View {
ZStack {
if isPresented {
Color.black.opacity(0.5).ignoresSafeArea()
VStack {
Spacer()
ScrollView(.vertical, content: {
VStack {
ForEach(0...50, id: \.self) { i in
Text("Comment").foregroundStyle(.pink)
Spacer()
}
}
.frame(maxWidth: .infinity)
})
.frame(height: (550 - 80))
.frame(maxWidth: .infinity)
.padding(.bottom, 80)
.background(.white.opacity(0.1))
}
.ignoresSafeArea(.keyboard)
.fixedSize()
.transition(transition)
VStack {
Spacer()
HStack {
Text("LOREM")
TextField("TESTING", text: $text, axis: .vertical)
.keyboardType(.asciiCapable)
.autocorrectionDisabled(true)
.foregroundStyle(.pink)
}
.frame(minHeight: 50, maxHeight: 100)
.background(.green.opacity(0.1 ))
}
.frame(maxWidth: .infinity)
.transition(transition)
}
}
}
}
#Preview {
TikTokView()
}
字符串
2条答案
按热度按时间9cbw7uwe1#
我有一个工作的解决方案,如果有人需要它,这里的代码:
字符串
dphi5xsq2#
不需要手工构建,SwiftUI已经内置了
Viewmodifier
。所以你想要的可以这样写:字符串