Я создаю приложение, которое позволит людям вести счет в настольных играх. Я создал представление, которое содержит имя игрока и его текущий счет. У меня макет iphone установлен на альбомный, и мне все равно, какой макет используется на ipad. Проблема, с которой я сталкиваюсь, заключается в том, что когда я нахожусь на моем iphone, размеры всех четырех игроков разные. Вы можете видеть, что я пытаюсь использовать .frames, и я предположил, что swiftUI поймет, что четыре представления всегда должны оставаться одинакового размера. Это решение может быть неоптимальным, но я пытаюсь понять, как уместить все это на странице и масштабировать так, чтобы оно соответствовало представлению ipad?
Вот текущий вид: Игрок 1 в правом верхнем углу или игрок 2 в левом нижнем углу будут иметь большие размеры
![enter image description here](https://i.stack.imgur.com/ZdnQ1.jpg)
Просмотр игрока:
struct PlayerView: View {
var playerName:String
//var score:Int
var body: some View {
ZStack{
RoundedRectangle(cornerRadius: 10)
.stroke(Color.black, lineWidth: 3)
.frame(minWidth: 115, idealWidth: 115, maxWidth: 384, minHeight: 25, idealHeight: 34, maxHeight: 50, alignment: .center)
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.frame(minWidth: 115, idealWidth: 115, maxWidth: 384, minHeight: 25, idealHeight: 34, maxHeight: 50, alignment: .center)
Text("\(playerName)")
.foregroundColor(.white)
}
Просмотр результатов:
struct ScoreView: View {
var body: some View {
ZStack(alignment:.bottom){
RoundedRectangle(cornerRadius: 25)
.stroke(Color.black, lineWidth: 3)
.frame(minWidth: 115, idealWidth: 115, maxWidth: 200, minHeight: 100, idealHeight: 100, maxHeight: 175, alignment: .center)
RoundedRectangle(cornerRadius: 25)
.fill(Color.blue)
.frame(minWidth: 115, idealWidth: 115, maxWidth: 200, minHeight: 100, idealHeight: 100, maxHeight: 175, alignment: .center)
VStack(spacing: 3){
Text("Points")
Text("0")
.padding(.bottom)
}
.foregroundColor(Color.white)
}
.aspectRatio(contentMode: .fit)
}
}
Комбинированный просмотр:
struct ScoreBoardView: View {
var playerName: String
var body: some View {
ZStack(alignment: .top){
ScoreView()
.layoutPriority(2.0)
PlayerView(playerName: playerName)
.layoutPriority(1.0)
}
}
}
Вид доски:
var body: some View {
VStack {
Text("BANNER PLACEHOLDER")
.padding([.leading,.trailing],80)
.padding([.top,.bottom],20)
.border(Color.black)
HStack {
VStack{
ScoreBoardView(playerName: "Player 1")
.padding(.bottom, 50)
.padding(.leading,10)
ScoreBoardView(playerName: "Player 2")
.padding(.leading,10)
}
addPointsCombinedView()
.aspectRatio(contentMode: .fit)
.layoutPriority(1.0)
VStack{
ScoreBoardView(playerName: "Player 3")
.padding(.bottom, 50)
ScoreBoardView(playerName: "Player 4")
}
}
}