Как масштабировать вид, чтобы соответствовать его родителям?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как масштабировать вид, чтобы соответствовать его родителям?

Сообщение Anonymous »

код, который воспроизводит проблему

Код: Выделить всё

import SwiftUI

@main
struct KeyboardLayoutProblemApp: App {
var body: some Scene {
WindowGroup {
iOSTabView()
}
}
}

struct iOSTabView: View {
var body: some View {
TabView {
GameView()
.tabItem {
Label("Play", systemImage: "gamecontroller.fill")
}
}
}
}

struct GameView: View {
var body: some View {
VStack {
Text("Play")
Spacer()
KeyboardView()
}
.padding()
}
}

struct KeyboardView: View {
let firstRowLetters = "qwertyuiop".map { $0 }
let secondRowLetters = "asdfghjkl".map { $0 }
let thirdRowLetters = "zxcvbnm".map { $0 }

var body: some View {
VStack {
HStack {
ForEach(firstRowLetters, id: \.self) {
LetterKeyView(character: $0)
}
}
HStack {
ForEach(secondRowLetters, id: \.self) {
LetterKeyView(character: $0)
}
}
HStack {
ForEach(thirdRowLetters, id: \.self) {
LetterKeyView(character: $0)
}
}
}
.padding()
}
}

struct LetterKeyView: View {
let character: Character

var width: CGFloat { height*0.8 }
@ScaledMetric(relativeTo: .title3) private var height = 35

var body: some View {
Button {
print("\(character) pressed")
} label: {
Text(String(character).capitalized)
.font(.title3)
.frame(width: self.width, height: self.height)
.background {
RoundedRectangle(cornerRadius: min(width, height)/4, style: .continuous)
.stroke(.gray)
}
}
.buttonStyle(PlainButtonStyle())
}
}

#Preview {
iOSTabView()
}
проблема

Код: Выделить всё

GameView
не соответствует своему родительскому представлению:

Вопрос
Как мне сделать Gameview быть в качестве его родителей, как его родительский вид? /> то, что я пробовал, и не работал < /strong> < /p>

Код: Выделить всё

GameView()
.frame(maxWidth: .infinity, maxHeight: .infinity)
< /code>
GeometryReader { geometry in
GameView()
.frame(maxWidth: geometry.size.width, maxHeight: geometry.size.height)
}
< /code>
GameView()
.clipped()
< /code>
GameView()
.layoutPriority(1)
< /code>
GameView()
.scaledToFit()
< /code>
GameView()
.minimumScaleFactor(0.01)
< /code>
GameView()
.scaledToFill()
.minimumScaleFactor(0.5)
Я не использую uiscreen.main.bounds.width Потому что я пытаюсь создать многоплатформенное приложение.


Подробнее здесь: https://stackoverflow.com/questions/796 ... its-parent
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»