首页 > 解决方案 > 将 SwiftUI 视图设置为始终保持一种尺寸

问题描述

我认为我总是希望保持相同的尺寸,我没有让它响应不同的屏幕尺寸,因为它最终会转换为 PDF。如何将特定视图设置为始终保持大小,并且当我在工作表中显示它时,它将以相同的格式显示,只是按比例缩小?

这是我试图保持以下大小和纵横比的视图:

ScrollView(.vertical){
    VStack(spacing: 0){   
        ForEach(processor.matchEvents){event in
            if(event.team.home == true){
                HomeArm(team: event.team, event: event) //Same as AwayArm, just changes text
            }
            else{
                AwayArm(team: event.team, event: event)
            }
        }
    }
}

struct AwayArm: View {
    
    @ObservedObject var team: Team
    var event: MatchEvent
    
    var body: some View {
        
        let mins: String = String(event.time)
        
        ZStack {
            Rectangle()
                .frame(width: 5, height: 200)
            HStack(spacing: 0){
                Spacer()
                Text("\(mins)'")
                    .font(.title)
                    .frame(width: 60, height: 60, alignment: .center)
                    .foregroundColor(team.teamTextColor)
                    .background(team.teamColor)
                    .clipShape(Circle())
                    .modifier(RoundedEdge(width: 5, color: .black, cornerRadius: 40))
                Rectangle()
                    .frame(width: 80, height: 5)
                VStack{
                    Text(event.event)
                        .font(.title)
                    Text("Event Details")
                        .font(.title2)
                    Text("\(event.player.shirtNumber) - \(event.player.playerName)")
                        .font(.title3)
                }.padding()
                .foregroundColor(.white)
                .frame(width: 250, height: 150)
                .background(LinearGradient(gradient: Gradient(colors: [Color(UIColor.lightGray), .gray]), startPoint: .top, endPoint: .bottom))
                .cornerRadius(25)
                .modifier(RoundedEdge(width: 5, color: .black, cornerRadius: 30))
                
            }
            .padding(.top)
            .padding(.trailing, 35)
        }
    }
}

我希望它显示在工作表中,但保持正确的尺寸和纵横比:

HStack{
    ScrollView(.vertical){
        MatchReportView()
    }
    Text("")           
}

任何关于始终保持相同大小的帮助,将不胜感激

标签: swiftxcoderesponsive-designswiftui

解决方案


推荐阅读