SwiftUI:minimumScaleFactor不适用于堆栈元素

时间:2019-09-07 05:07:10

标签: ios swift swiftui

我水平堆叠了两段文字(第二段以蓝色突出显示)。它可以在iPhone XR上很好地使用,但是在较小的设备(例如iPhone X)上,文本不适合。我试图通过使用minimumScaleFactor缩放文本来解决此问题。但是,SwiftUI似乎可以决定要在堆栈中扩展什么。在此示例中,在较小的设备上,它删除了加粗并仅缩小了第一个(非蓝色)元素。蓝色元素保持不变。有什么想法为什么会发生这种情况?如何将两个加粗的文本元素一起缩小?谢谢!

    var normalText: String
    var highlightedText: String

    var body: some View {
        HStack() {
            Text(normalText)
                .font(.largeTitle)
                .bold()
                .lineLimit(1)

            Text(highlightedText)
                .font(.largeTitle)
                .bold()
                .lineLimit(1)
                .foregroundColor(.blue)

            Spacer()
        }
        .minimumScaleFactor(0.5)
    }
}

这是它在较小设备上的显示方式: small device display 以及它如何在更大的设备上显示: large device display

1 个答案:

答案 0 :(得分:1)


struct ContentView: View {
    var normalText: String = "Hello and Welcome to Stack "
    var highlightedText: String = "Overflow"

    var body: some View {
        HStack() {
            Group {
                Text(normalText).bold() +
                Text(highlightedText).bold()
                .foregroundColor(.blue)
            }
            .lineLimit(1).font(.largeTitle)

            Spacer()
        }
        .minimumScaleFactor(0.5)
    }
}

+是为2个文本定义的,但不是为2个视图定义的,并且由于lineLimit()返回一个视图,需要对加入的文本进行分组。我加长了组合弦以使其收缩。