如何解决SwiftUI如果嵌入了View
所以我的MainView.Swift中有一个嵌入式视图
VStack(alignment: .leading){
MediaPlayerView()
}.frame(height: 250)
我想告诉MediaPlayerView
,如果其帧高为250,则显示X内容。
但是如果没有框架高度,则显示Z内容。
这是怎么做的?
如果是全屏模式-我希望显示播放暂停按钮。
(注意,图像未显示尚未编码的播放暂停按钮。)
如果不是在全屏模式下,我希望它包装图像并现在将播放信息放到一个可以调用MediaPlayerView的按钮中,并隐藏播放暂停按钮。
解决方法
您可以使用GeometryReader
这样确定视图的高度:
struct MediaPlayerView: View {
var body: some View {
GeometryReader { geo in
if geo.size.height == 250 {
Text("Height 250")
} else {
Text("Height something else")
}
}
}
}
尽管最好将参数传递给MediaPlayerView
,告诉它您想要显示的内容。
类似的事情可能起作用:
struct ContentView: View {
@State private var fullView = false
var body: some View {
VStack(alignment: .leading) {
MediaPlayerView(showFullView: self.fullView)
}
.frame(height: fullView ? 500 : 250)
.onTapGesture {
self.fullView.toggle()
}
}
}
struct MediaPlayerView: View {
let showFullView: Bool
var body: some View {
VStack {
if showFullView {
Text("Full view")
} else {
Text("logo only")
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。