Почему текстовое содержимое растягивается? - PullRequest
0 голосов
/ 17 июня 2019

В моем представлении есть динамический элемент Text, который обновляет свое содержимое в зависимости от текущей серии выигрышей игрока.

if player1Streak > 0 || player2Streak > 0 {
    HStack {
        Text("Winning streak:")
        Text(player1Streak > 0 ? "\(player1Streak)" : "\(player2Streak)")
        Text(player1Streak > 0 ? "(\(player1Name))" : "(\(player2Name))")
    }
}

Вот как это должно выглядеть:

correct size

Проблема в том, что Text, кажется, растягивается случайным образом. Иногда он широкий и текст усекается:

wide

В других случаях он сжимается так:

shrinked

Я запускаю приложение в симуляторе. Что-то не так с моим кодом или это ошибка в SwiftUI?

1 Ответ

0 голосов
/ 17 июня 2019

Как отмечает Тамас в комментариях, это, вероятно, ошибка в текущей реализации SwiftUI.Тем не менее, я столкнулся с этим сам и использовал ZStack с условным maxWidth для достижения аналогичного эффекта.Вышеприведенный код может быть изменен на:

if player1Streak > 0 || player2Streak > 0 {
    HStack {
        Text("Winning streak:")
        ZStack {
            Text("\(player1Streak)").frame(maxWidth: player1Streak > 0 ? .infinity : 0.0)
            Text("\(player2Streak)").frame(maxWidth: player1Streak > 0 ? 0.0 : .infinity)
        }
        ZStack {
            Text("(\(player1Name))").frame(maxWidth: player1Streak > 0 ? .infinity : 0.0)
            Text("(\(player2Name))").frame(maxWidth: player1Streak > 0 ? 0.0 : .infinity)
        }
    }
}

Я не нашел проблемы с этим подходом, и он должен работать как обходной путь до тех пор, пока не будет устранена условная ошибка Text.Тем временем вы должны подать отчет об ошибке на Feedback Assistant !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...