You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何将NavigationLink定位在距底部指定距离处

两种实现按钮定位的方案

方案一:保留VStack,将按钮定位在VStack底部附近

VStack默认会把内容垂直居中,要把按钮推到靠近底部的位置,只需在按钮上方添加Spacer(),它会占据VStack内剩余的垂直空间,把按钮挤到下方,再通过padding设置按钮与VStack底部的间距:

struct SomScreen: View {
    var body: some View {
        ZStack{
            Image("SomeImage")
                .resizable()
                .scaledToFill()
                .padding()

            VStack {
                Spacer() // 占据上方剩余空间,将按钮推至下方
                NavigationLink(destination: SomeNextScreen(), label: {
                    buttonToGetToNextScreen()
                })
                .padding(.bottom, 40) // 自定义按钮距VStack底部的距离,数值可按需调整
            }
        }   
    }
}

方案二:移除VStack,直接将按钮定位在屏幕底部附近

如果不需要VStack,可直接在ZStack里利用frame的对齐属性,配合padding控制按钮与屏幕底部的距离:

struct SomScreen: View {
    var body: some View {
        ZStack{
            Image("SomeImage")
                .resizable()
                .scaledToFill()
                .padding()

            NavigationLink(destination: SomeNextScreen(), label: {
                buttonToGetToNextScreen()
            })
            .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .bottom) // 将按钮对齐到屏幕底部
            .padding(.bottom, 40) // 自定义按钮距屏幕底部的距离,数值可按需调整
        }   
    }
}

若需要更精准的像素级定位,也可以用GeometryReader获取屏幕尺寸实现:

struct SomScreen: View {
    var body: some View {
        GeometryReader { geo in
            ZStack{
                Image("SomeImage")
                    .resizable()
                    .scaledToFill()
                    .padding()

                NavigationLink(destination: SomeNextScreen(), label: {
                    buttonToGetToNextScreen()
                })
                .position(x: geo.size.width / 2, y: geo.size.height - 40) // x轴居中,y轴距离底部40个单位
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者Huckleberry Carignan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:02:06