如何为视图提供固定位置,使其不受 SwiftUI 中滚动的影响

Posted

技术标签:

【中文标题】如何为视图提供固定位置,使其不受 SwiftUI 中滚动的影响【英文标题】:How to give a view a fixed position so it is not affected by scroll in SwiftUI 【发布时间】:2020-08-09 20:00:03 【问题描述】:

在 SwiftUI 中有没有办法给任何视图对象一个固定的位置,这样当视图的其余部分滚动时它就不会移动?

【问题讨论】:

是的,但您的问题尚不清楚。请添加更好的解释和一些代码来澄清您的要求。 【参考方案1】:
      VStack.init 
            VStack.init(alignment: .center, spacing: 0, content: 
                Text("UnScrollable")
            ).padding()
            
            ScrollView.init 
                VStack 
                    Text("Scrollable")
                
            
        

你需要在第一个 VStack 上设置你的框架,因为如果 vstack 需要比当前高度分辨率更多的空间,你的滚动视图将不会在屏幕上可见。

如果您需要固定位置,例如浮动按钮 你需要使用这个逻辑ZStack -> VStack/View With position -> ScrollView 你需要带有自定义位置的按钮才能实现这一点,

var body: some View 
    GeometryReader.init  reader in
        ZStack 
            
            ScrollView.init 
                VStack 
                    Text.init("Hello?")
                    Rectangle.init().foregroundColor(.orange).frame(width: reader.size.width, height: 1024, alignment: .center)
                
            
            
            VStack.init 
                Text("wakwkakwkaw").position(.init(x: reader.size.width - 100, y: reader.size.height - 100))
            
        
    

【讨论】:

你可以在 ScrollView 上做同样的事情

以上是关于如何为视图提供固定位置,使其不受 SwiftUI 中滚动的影响的主要内容,如果未能解决你的问题,请参考以下文章

如何为 SwiftUI 动态构建视图并呈现它?

HTML代码中如何用POSITION属性来固定一个DIV模块的位置,让其不随滚动条移动?

SwiftUI 和 MVVM:当视图模型更改“数据源”(`@Publish items`)本身时,如何为“列表元素更改”设置动画

SwiftUI:如果满足条件,如何为文本添加边框?

如何为 SwiftUI InputField 编写 UI 测试

如何为两个视图之间的过渡设置动画,使其看起来第一个向上,第二个从底部出现?