swift ZStack上的最顶部元素比屏幕宽

kcugc4gi  于 2023-02-28  发布在  Swift
关注(0)|答案(2)|浏览(125)

我有一个背景比设备宽度更宽的ZStack,但是我想把一个VStack放在屏幕边界内的ZStack上面。这个代码的问题是VStack和ZStack中的其他元素一样宽。
有什么办法解决吗?

ZStack {
    Group {
        VStack {
            Image("EmptyPhoto")
                .resizable()
                .aspectRatio(contentMode: .fill)
                .edgesIgnoringSafeArea(.vertical)
                .frame(height: 600)
            Spacer()
        }
        
        Color.black.opacity(0.5)
            .edgesIgnoringSafeArea(.vertical)
        
        VStack {
            Color.black.opacity(0.0)
            
            Spacer()
                .frame(height: 0)
            
            LinearGradient(gradient: Gradient(colors: [Color.black.opacity(0.0), Color.black, Color.black]), startPoint: .top, endPoint: .bottom)
        }
        .edgesIgnoringSafeArea(.vertical)
    } // Background
    
    VStack {
        Picker(selection: $filterPicker, label: EmptyView()) {
            Text("Friends").tag(1)
            Text("World").tag(2)
        }
        .pickerStyle(.segmented)
        
        HStack {
            Text("@gallapagos")
                .foregroundColor(Color.white)
            Spacer()
            
        }
        Spacer()
    }
    .padding()
}
ryevplcw

ryevplcw1#

使用以下方法修复:

extension UIScreen{
   static let screenWidth = UIScreen.main.bounds.size.width
}

已将其放置在// Background下方

.frame(maxWidth: UIScreen.screenWidth)
zpf6vheq

zpf6vheq2#

我只会说:

.frame(maxWidth: UIScreen.main.bounds.size.width)

相关问题