SwiftUI:minimumScaleFactor 没有均匀地应用于堆栈元素
Posted
技术标签:
【中文标题】SwiftUI:minimumScaleFactor 没有均匀地应用于堆栈元素【英文标题】:SwiftUI: minimumScaleFactor not applying evenly to stack elements 【发布时间】:2019-09-07 05:07:10 【问题描述】:我有两个文本的水平堆栈(第二个以蓝色突出显示)。它适合 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)
这是它在较小设备上的显示方式: 以及它如何在更大的设备上显示:
【问题讨论】:
【参考方案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()
返回一个视图,需要对连接的文本进行分组。我将组合的字符串加长以强制其收缩。
【讨论】:
感谢您的回复!分组似乎确实允许文本一起缩小,这很棒,但现在整个文本都没有加粗。我正在玩它,但有什么想法吗? 重要的是+
。该集团只是解决了 lineLimit() 的问题。至于bold(),我觉得你可以用font()来做点什么。
哦,好吧,这是有道理的。我不太确定你对字体()的意思。它已被定义为 .largeTitle,但粗体不适用。你能澄清一下你的意思吗?
font
需要一个字体?不仅仅是 .largeTitle 等预定义的之一,因此您可以使用 Font.largeTitle.bold()
或类似的东西。
谢谢,但这实际上不起作用。我尝试了一些没有运气的事情。不确定这是一个错误还是我只是错过了一些东西......以上是关于SwiftUI:minimumScaleFactor 没有均匀地应用于堆栈元素的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI NavigationLink 如何到达另一个 SwiftUI 页面?
SwiftUI - 如何在 SwiftUI 中弹出到特定视图?