Проблема усечения текста в SwiftUI Text View

Я делаю календарь SwiftUI и столкнулся со странной проблемой усечения текста в SwiftUI Text View.

struct test : View {
var body: some View {
    GeometryReader { geometry in
        HStack(alignment: .center, spacing: 0) {
            ForEach(0..<7) { _ in
                Text("Tue").frame(width: geometry.size.width / 7).border(Color.red, width: 2)
            }               
        }
    }
}
}

введите здесь описание изображения

Вначале я подумал, что это может быть из-за того, что размер текстового представления недостаточно велик. Но когда я уменьшаю ширину текстового представления, усечение исчезает. Я также попытался установить шрифт меньшего размера, но это тоже не сработало. Спасибо за подсказку!

struct test : View {
var body: some View {
    GeometryReader { geometry in
        HStack(alignment: .center, spacing: 0) {
            ForEach(0..<7) { _ in
                Text("Tue").frame(width: geometry.size.width / 8).border(Color.red, width: 2)
            }
        }
    }
}
}

введите здесь описание изображения


person echo    schedule 03.07.2019    source источник


Ответы (1)


Бета 5

В бета-версии 5 проблема, похоже, решена.


Бета 4 и предыдущая версия

Это определенно ошибка, которая проявляется только в iPhone XS, но не в iPhone XR. Обратите внимание, что XS имеет ширину 375 баллов, а XR - 414 баллов. Однако это не имеет никакого отношения к этому. 375 более чем достаточно, чтобы поместиться на 7 этикеток.

Я думаю, вам следует отправить отчет об ошибке, а пока использовать XR для разработки. Если у кого-то есть настоящее устройство, было бы неплохо узнать, присутствует ли там ошибка.

Я создал этот небольшой пример, который показывает, насколько хаотично он работает на Xs

введите здесь описание изображения

А вот и Xr, который работает как надо:

введите здесь описание изображения

Вот код примера:

struct ContentView: View {
    @State private var slider: Float = 100.0

    var body: some View {
        VStack {
            GeometryReader { geometry in
                HStack(alignment: .center, spacing: 0) {
                    ForEach(0..<7) { _ in
                        Text("Tue").frame(width: geometry.size.width / 7, height: 30).border(Color.blue)
                    }
                }
            }.frame(width: Length(slider), height: 40)
            Text("\(slider)")
            Slider(value: self.$slider, from: 100.0, through: 375.0, by: 1.0)
            Spacer()
        }
    }
}
person kontiki    schedule 03.07.2019
comment
Используете ли вы какие-либо модификаторы в настройках предварительного просмотра? Если да, то какой? - person kontiki; 03.07.2019
comment
Также обратите внимание, что если вы хотите предотвратить появление эллипсов, вы можете использовать fiexedSize (). При необходимости текст будет расширяться за пределы: Text (вторник) .fixedSize (). Frame (width: geometry.size.width / 7). - person kontiki; 03.07.2019
comment
Большое спасибо! Я выбрал iPhone Xs. Я сменил его на iPhone XR, и теперь все работает нормально. - person echo; 03.07.2019
comment
@echo Я обновил ответ, чтобы показать, что это действительно ошибка. - person kontiki; 03.07.2019
comment
Спасибо за обновление! @kontiki Поскольку все еще находится в бета-версии, я могу просто использовать симулятор iPhone XR, насколько он работает. Надеюсь, эта ошибка будет исправлена ​​в будущих новых версиях. - person echo; 04.07.2019
comment
Я обновил свой ответ, так как, похоже, проблема была решена в бета-версии 5. - person kontiki; 30.07.2019